所以这就是所谓的模块模式,用于创建私有成员的单身人士:
var foo = (function () {
var _foo = 'private!';
return {
foo: function () { console.log(_foo); },
bar: 'public!'
}
})();
Run Code Online (Sandbox Code Playgroud)
还有我自己发现的这种方法,但没有看到任何关于:
var foo = new function () {
var _foo = 'private!';
this.bar = 'public!';
this.foo = function () { console.log(_foo); };
}
Run Code Online (Sandbox Code Playgroud)
我认为必须有一个理由为什么没有人写这篇文章,而有大量关于模块模式的文章.这种模式有什么缺点吗?或许速度或浏览器兼容性?
Mar*_*nze 12
在这种情况下,您似乎只使用该"类"的一个实例对象.因此,可能要采取看看道格拉斯Crockford的想着把直接在眼前:newfunction
通过使用new来调用函数,该对象保持一个无用的
prototype对象.这浪费了记忆,没有抵消优势.如果我们不使用new,我们不会将浪费的原型对象保留在链中.因此,我们将使用()以正确的方式调用工厂函数.
所以根据着名的雅虎javascript架构师!你应该使用第一种方法,你有他的理由.
我认为两者之间没有任何实质性差异。我更喜欢后者,因为它的标点符号混乱得多。
另一方面,“模块模式”方法似乎是最常见的,并且正在成为一种众所周知的模式(由于 JQuery 的兴起)。坚持这种公认的模式可能会更好,不是因为它比其他方法有更多的技术优点,而是因为它可能更容易识别(尽管标点符号很重)。
| 归档时间: |
|
| 查看次数: |
5401 次 |
| 最近记录: |