前两天在前端群看到群友问的一个问题,问题如下:
var Name = 'window';
var obj = {
Name:'obj字符串',
getName:function(){
console.log(name);
}
}
obj.getName(); //输出window
问:为什么会输出window,而不是obj字符串?
这就会用到我们标题所提到的this了,this是JavaScript中的关键字,指的是当前的上下文对象,简单的说就是方法/属性的所有者,因为上面代码中,我们输出的就是全局变量Name,而不是对象里面私有的Name,所以会输出"window"。
我们把上面代码修改一下:
var Name = 'window';
var obj = {
Name:'obj字符串',
getName:function(){
console.log(this.Name);
}
}
obj.getName(); //输出obj字符串
上面代码中,obj是一个对象,拥有Name属性与getName方法,在getName中this指向了所属的对象obj,所以就实现了输出"obj字符串";