name = "global";
var obj = {
name:"obj",
fun:function(){
alert(name);
}
};
obj.fun();
结果是global,我觉得应该是obj才对,求解答
fun:function(){
alert(this.name);////
}
我知道如果是this.name会输出obj的。 我只是不知道为什么name会输出global,想不明白
对于name:"obj",它其实变量obj的一个属性,这个name本身不是变量。在alert(name);中,函数从内往外查找变量name,在obj对象中,并没有变量name(因为它是属性),所以继续往上层查找,直到找到name = "global";才输出。
这个很容易理解啊,alert(name)里的name是指的变量,而obj里的name是一个属性,找变量能找到属性上去么?如果要输出属性值的话必须用obj.name或者this.name