function函数调用中经常用到this ,
但是this具体是指的什么 ,它的作用范围还是不太清楚
今天在慕课听nodejs 课程的时候老师讲了一下 不同函数中this的所指
下面直接上代码
1.作为对象方法的调用
这时this就指这个上级对象。
var pet = {
words:'...',
speak:function(){
console.log(this.words)
console.log(this ===pet)
}
}
pet.speak();
node 在终端运行的时候打印出
//...
//true
说明此时的this 指的是调用的函数对象,该函数对象是speak函数所在的pet
2.this指向全局对象
这是函数的最通常用法,属于全局性调用,因此this就代表全局对象Global。
function pet(words){
this.words = words
console.log(this.words)
console.log(this===global)
}
pet('...');
//...
//true
var x=1;
function text(){
alert(this.x)
}
text();//1
.........................................
var x=1;
function test(){
this.x =0;
}
test();
alert(x);
3.作为构造函数调用
所谓构造函数,就是通过这个函数生成一个新对象(object)。这时,this就指这个新对象。
function Pet(words){
this.words=words
this.speak=function(){
console.log(this.words)
console.log(this)
}
}
var cat = new Pet('miao')
cat.speak();
//miao
// Pet{word:'miao',speak:[function]}