【发布时间】:2016-12-31 10:15:54
【问题描述】:
我有一个构造函数和一个闭包。
我的构造函数:
var Item = function(data) {
this.sayThis = function() {
console.log(this);
};
this.data = data;
};
我的闭包函数:
var $item = function(document, window, ..., itemData) {
return new Item(itemData);
}.bind(dontWannaPutAnythingHere, document, window, .../*except itemData*/);
如果我在 'thisArg' 中使用任何东西,则新形成的对象内的 'this' 的上下文往往是给定的。我不希望这样,但我仍然想绑定那些文档、窗口和东西,以便我可以在其他时间提供最后一个参数项数据。
我要调用一个新函数为
// Calling it normally.
var someItem = $item("chocolate");
// This should result in Item {data: "chocolate", ...}
// and not anything else.
var someItem = $item("chocolate").sayThis();
干杯, Rj
【问题讨论】:
-
你要找的词是“部分申请”。
-
实际上,您调用
bind的函数只执行return new Item(itemData);而根本不使用this,因此与thisArgument 传递的内容无关。只需使用null。 -
非常感谢伯吉。是的,我打算使用这个闭包来创建类似 jQuery 的对象,这些对象可以具有存在于隔离环境中的变量。 -干杯,Rj
标签: javascript constructor closures this