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

在回调函数中如何改变类属性 - Web 开发 / Ajax
JScript code

function Test(/*string*/sClassName) {
    this.sClassName = sClassName;
}

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

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

    callback = null;
};

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



------解决方案--------------------
JScript code
function Test(/*string*/sClassName) {
    this.sClassName = sClassName;
}

Test.prototype.show = function(0 {
    
    alert(this.sClassName);    // 正常显示Test
    var me=this;//申明闭包对象
    var callback = function() {
//此时this对象为window对象
        alert(this.sClassName); // 显示undefined,如何才能显示Test中的this.sClassName?
        alert(me.sClassName); // 显示undefined,如何才能显示Test中的this.sClassName?
        me.sClassName = "test2" // 如何改变Test中的sClassName的值?
    };
    
    $.ajax({
        success: callback
    });

    callback = null;
};

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