JavaScript模式 - Facade和Object文字模式之间的差异

Fra*_*ent 2 javascript design-patterns object

我想知道这两种模式之间的区别是什么.

我可能会弄错,但他们似乎使用相同的结构来实现更大级别的代码.

门面图案:

var mobileEvent = {
  // ...
  stop: function (e) {
    e.preventDefault();
    e.stopPropagation();
  }
  // ...
};
Run Code Online (Sandbox Code Playgroud)

对象文字:

var myObject = {
    property1:"something",
    property2:"something else",
    method1:function(){
        console.log('hello world');
    }
};
Run Code Online (Sandbox Code Playgroud)

如果它们真的用于不同的目的,我应该何时使用它们?

Tom*_*icz 6

只是他们使用相同的语法并不意味着他们有相同的目的.许多设计模式具有完全相同的实现,但基于上下文具有不同的含义.

Facade封装了一个或多个对象,为客户提供了更简单的API,隐藏了晦涩难懂的内容并使其更难犯错误.在您的示例中,mobileEvent.stop()函数封装了两个必须一起进行的JavaScript调用,以实现更高级别的行为.

对象文字实际上不是一种模式,它只是一种在JavaScript中定义一次性对象的方法.如您所见,它可用于实现Facade模式和许多其他模式.