我正在阅读KnockoutJS源代码.
我遇到了以下一行,我不确定我理解......
ko.utils = new (function () {
Run Code Online (Sandbox Code Playgroud)
一般来说,结构似乎是这样的:
ko.utils = new (function () {
// some variables declared with var
return {
export:value,
export:value
};
})();
Run Code Online (Sandbox Code Playgroud)
我不明白这个结构,为什么new需要?它有什么作用?它有用的是什么?
(我认为如果函数new在其名称之前调用它作为构造函数调用,并且如果它返回一个对象,则它与没有调用的函数相同new.)
更新:我在github上问了KnockoutJS团队,这就是我得到的:
我的猜测是史蒂夫只是不知道不需要它.回顾他最初的提交,我看到很多不必要的消息已被删除.
Jan*_*roň 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"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
206 次 |
| 最近记录: |