日期:2014-05-16  浏览次数:20522 次

关于javascript中回调函数(callback)中this指针的问题
JScript code

function Test() {
    this.sClassName = "Test";
}

Test.prototype.show = function(0 {
    
    alert(this.sClassName);    // 正常显示Test

    var callback = function() {
        alert(this.sClassName); // 显示undefined,如何才能显示Test中的this.sClassName?
    };
    
    $.ajax({
        success: callback
    });

    callback = null;
};

var test = new Test();
test.show();



------解决方案--------------------
JScript code

function Test() {
    this.sClassName = "Test";
}

Test.prototype.show = function(0 {
    
    alert(this.sClassName);    // 正常显示Test
    var cn = this.sClassName;
    var callback = function() {
        alert(cn); // 这样写就可以
    };
    
    $.ajax({
        success: callback
    });

    callback = null;
};

var test = new Test();
test.show();

------解决方案--------------------
要理顺上下文:
function Test() {
this.sClassName = "Test";
}

Test.prototype.show = function(0 {

alert(this.sClassName); // 正常显示Test
var This = this;
var callback = function() {
alert(This.sClassName); // 显示undefined,如何才能显示Test中的this.sClassName?
};

$.ajax({
success: callback
});

callback = null;
};

var test = new Test();
test.show();