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

关于javascript引用父级变量的问题
JScript code

function myClass(){
    this.a = "fuck you";    //这里定义成员a给下面的函数使用
}

myClass.prototype = 
{

    b:function(){
        function d(){ 
            alert(this.a);    //请问这里如果引用上面定义的变量a弹出fuckyou?同时还要在这里用this.a = "shit";达到修改上面的变量a的效果

        }
        d();
    }
}
var obj = new myClass();
obj.b();



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

function myClass(){
    this.a = "origin";    
}

myClass.prototype = 
{
    b:function(){
        function d(obj){ 
            alert(obj.a);   
            obj.a='new';
        }
        d(this);
        alert(this.a);
    }
}
var obj = new myClass();
obj.b();

------解决方案--------------------
function myClass(){
this.a = "fuck you"; //这里定义成员a给下面的函数使用
}

myClass.prototype = 
{

b:function(){
var that = this;
function d(){ 
alert(that.a); //请问这里如果引用上面定义的变量a弹出fuckyou?同时还要在这里用this.a = "shit";达到修改上面的变量a的效果

}
d();
}
}
var obj = new myClass();
obj.b();