在不重新分配的情况下引用外部上下文

时间:2012-10-09 15:34:04

标签: javascript

是否可以引用外部函数的上下文而无需将上下文重新分配给某个局部变量?

例如:

var objects = [];

// populate objects

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

1 个答案:

答案 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));
};