最佳答案
我的同事一直使用小写“ f”的“ new function ()”来定义 JavaScript 中的新对象。它似乎在所有主流浏览器中都能很好地工作,而且似乎在隐藏私有变量方面也相当有效。这里有一个例子:
var someObj = new function () {
var inner = 'some value';
this.foo = 'blah';
this.get_inner = function () {
return inner;
};
this.set_inner = function (s) {
inner = s;
};
};
一旦使用了“ this”,它就变成了 some Obj 的公共属性。因此,some Objec.foo、 some Objec.get _ inner ()和 some Objec.set _ inner ()都是公开可用的。另外,set _ inner ()和 get _ inner ()是有特权的方法,因此它们可以通过闭包访问“ inner”。
然而,我在任何地方都没有看到任何关于这项技术的参考,甚至道格拉斯·克罗克福特的 JSLint 也抱怨说:
- 奇怪的结构。删除’新’
我们正在生产中使用这种技术,它似乎工作得很好,但我有点担心,因为它没有任何地方的文件。有人知道这是否是一种有效的技术吗?