0

是否可以在不将上下文重新分配给某个局部变量的情况下引用外部函数的上下文?

例如:

var objects = [];

// populate objects

Foo.prototype.bar = function() {
    var outerObject = this;
    $.each(objects, function () {
        this.someMethod(outerObject);
    });
};
4

1 回答 1

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));
};
于 2012-10-09T15:39:49.043 回答