是否可以引用外部函数的上下文而无需将上下文重新分配给某个局部变量?
例如:
var objects = [];
// populate objects
Foo.prototype.bar = function() {
var outerObject = this;
$.each(objects, function () {
this.someMethod(outerObject);
});
};
答案 0 :(得分:1)
您可以使用.bind,否则,您必须使用本地变量存储this
。
Foo.prototype.bar = function() {
var outerObject = this;
var inner = (function () {
// do something with outerObject
console.log(this === outerObject);
}).bind(this);
};
的更新强> 的
对于你的情况:
var objects = [];
// populate objects
Foo.prototype.bar = function() {
$.each(objects, (function (obj) {
this.someMethod(obj);
}).bind(this));
};