通常,调用this
会起作用;但我在另一个上下文中调用该方法,因此this
指的是该上下文而不是“父”对象。
这是代码:
var someConfig = {
things: [
{
attr1: 'foo',
attr2: 'bar',
action: function() {
console.log(this);
}
}
]
}
function Constructor(config) {
var self = this;
self.name = 'test';
self.things = config.things;
$.each(self.things, function(i, thing) {
thing.action();
});
}
var obj = new Constructor(someConfig);
console.log(obj);
这是一个 jsfiddle。目标是使控制台中的两个对象相同,但this
在action
方法的上下文中返回action
所属的原始对象,而不是构造函数。
我唯一能想到的就是传递self
到action
,但我认为有更好的方法。