我有一个构造函数和一个闭包。
我的构造函数:
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
答案 0 :(得分:1)
这似乎有效:
var Item = function(data) {
this.sayThis = function() {
console.log(this);
};
this.data = data;
};
var $item = function(document, window, itemData) {
return new Item(itemData);
}.bind(null, document, window);
// Calling it normally.
var someItem = $item("chocolate");
// This should result in Item {data: "chocolate", ...}
// and not anything else.
var someItem = $item("chocolate").sayThis();
它符合您的要求吗?
JSFIDDLE:https://jsfiddle.net/sfcakq2j/4/
答案 1 :(得分:-1)
bind(null, ...)
模式, 'use strict'
将无效。为什么不使用iife代替bind
?
var $item = (function(document, window){
return itemData => new Item(itemData);
})(document, window);