是否可以在不将上下文重新分配给某个局部变量的情况下引用外部函数的上下文?
例如:
var objects = [];
// populate objects
Foo.prototype.bar = function() {
var outerObject = this;
$.each(objects, function () {
this.someMethod(outerObject);
});
};
是否可以在不将上下文重新分配给某个局部变量的情况下引用外部函数的上下文?
例如:
var objects = [];
// populate objects
Foo.prototype.bar = function() {
var outerObject = this;
$.each(objects, function () {
this.someMethod(outerObject);
});
};
您可以使用.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));
};