从javascript的内部回调中访问外部this的最简单,最短的方法是什么?

| 我知道以下代码可以访问此外部。
var o = function() {
    var that = this;
    this.a = 1;
    $(\'html\').click(function() {
        alert(that.a);
    });
}
new o();
但是我不想为同一个对象使用两个变量名(例如,this和that)。 而且我不想在每堂课上重复写
var that = this
。 我认为以下使用_this而不是_this的代码要简单一些。
var o = function() {
    var _this = this;
    this.a = 1;
    $(\'html\').click(function() {
        alert(_this.a);
    });
}
new o();
但是还有其他更简单,更短的方法吗?
已邀请:
这是一些类似的代码,但我认为它“更安全” 比您的示例多,如果您创建了多个'o'实例 每个实例可以更新\'a \'属性
var bar = function() {
        var that = {};
        that.a = 1;
        that.showA = function () {
            $(\'html\').click(function() {
                alert(that.a);
            });
        };
        return that;
}
var instanceOfBar = bar();
instanceOfBar.showA();
我可能不在这里,几个月都没有使用Javascript,所以现在很生锈
我真的很喜欢Ext \的
createDelegate
函数,它使您可以在创建函数时为任何函数设置
this
值。 这是functional4ѭ的功能较差的版本,可以在页面中添加它:
Function.prototype.createDelegate = function(thisObj) {
    var method = this;
    return function() {
        return method.apply(thisObj || window, arguments);
    };
}
这就是在示例中如何使用它的方法,永远不要将ѭ5设置为变量:
var o = function() {
    this.a = 1;
    $(\'html\').click(function() {
        alert(this.a);
    }.createDelegate(this));
}
new o();
Ext \的完整版本
createDelegate
让我们将参数作为第二个参数传递,并且可以使用它们代替,插入或附加到通常会传递给您的函数的参数列表中创建的代表

要回复问题请先登录注册