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();

解决方案 »

  1.   


    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();
      

  2.   

    this的作用域已经变了,此时是指callback这个函数,所以是undefined!
      

  3.   

    要理顺上下文:
    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();
      

  4.   

    后一个this.sClassName已经变来,对象指的是callback。没有定义,所以显示undefined。
      

  5.   

    this总是当前函数的this,第二个this已经是另一个函数的this了。
      

  6.   

    如果我要在回调函数中改变this.sClassName呢 应该怎么办
      

  7.   

    在调用此函数的时候就把this传过去比如 <div id='test' onclick="test(this)">测试</div>
    其余的时候的this都不是太确定的