作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道这两种模式之间有什么区别。
我可能错了,但他们似乎在使用相同的结构来为更大的代码体实现更高级别的接口(interface)。
门面模式:
var mobileEvent = {
// ...
stop: function (e) {
e.preventDefault();
e.stopPropagation();
}
// ...
};
对象文字:
var myObject = {
property1:"something",
property2:"something else",
method1:function(){
console.log('hello world');
}
};
如果它们真的有不同的用途,我应该在什么时候使用它们?
最佳答案
只是它们使用相同的语法这一事实并不意味着它们具有相同的目的。许多设计模式具有完全相同的实现,但根据上下文具有不同的含义。
Facade 封装一个或多个对象并为客户端提供更简单的 API,隐藏晦涩难懂的地方并使其更难出错。在您的示例中,mobileEvent.stop()
函数封装了两个 JavaScript 调用,它们必须结合在一起才能实现某些更高级别的行为。
Object literal 实际上并不是一种模式,它只是一种在 JavaScript 中定义一次性对象的方法。如您所见,它可用于实现Facade 模式和许多其他模式。
关于JavaScript 模式 - Facade 和对象字面量模式的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8947175/
1.字面常量 (1)字面意思是啥就是啥,看其表示就可以知道其值和类型。 (2)有值无名,一用来初始化变量,与一种字符相关联。 #include <stdio.h>int main()
我是一名优秀的程序员,十分优秀!