我正在阅读KnockoutJS源代码。
我遇到了以下一行,我不确定我理解......
ko.utils = new (function () {
一般来说,结构似乎与以下几行有关:
ko.utils = new (function () {
// some variables declared with var
return {
export:value,
export:value
};
})();
我不明白这个结构,为什么需要new
?它有什么作用?有什么用?
(我认为如果函数在其名称之前使用new
调用它作为构造函数调用,并且如果它返回一个对象,则它与没有new
的invokation相同。)
更新:我在github上问KnockoutJS团队,这就是我的回复:
我的猜测是史蒂夫只是不知道不需要它。回顾他最初的提交,我看到很多不必要的消息已被删除。
答案 0 :(得分:10)
可能是一些阻止this
到达全局上下文的模式(在这种情况下不是,因为每个变量都声明为var
,但作者可能想将它用作一般模式创建对象)。
var x = new (function () {
this.foo = "bar";
return {
// whatever
};
})();
console.log(foo); // Uncaught ReferenceError: foo is not defined
var x = (function () { // without new
this.foo = "bar";
return {
// whatever
};
})();
console.log(foo); // "bar"