什么是this:自动引用正在调用当前方法的.前的对象。 this指向的三种情况
obj.fun() fun中的this->obj,自动指向.前的对象
new Fun() Fun中的this->正在创建的新对象,new改变了函数内部的this指向,导致this指向实例化new的对象
fun()和匿名函数自调 this默认->window,函数内部的this,this默认是指向window的
//对象直接调用函数 var name="the window"; var object={ name:"silence", packname:function(){ return this.name; } } console.log(object.packname()); //对象调用了函数得到的值赋值给了一个对象然后再次调用 var name="the window"; var object={ name:"silence", packname:function(){ return this.name; } } var show=object.packname; console.log(show());当没有明确的执行时的当前对象时,this指向全局对象window。
这里show=object.packname;show();这里show没有明确的指明执行对象,所以等同于 window.show();结果是 the window 理解一下什么是全局对象
1 var name=“the window”; 2 var silence={ 3 name:“silence”, 4 packname:function(){ 5 return this.name; 6 } 7 } 8 var seraph={ 9 name:“seraph”, 10 packname:function(){ 11 var fun=silence.packname; 12 return fun(); 13 } 14 } 15 console.log(seraph.packname());
与2类似,fun();得到the window,fun()可以看出函数内部的函数指向window。我是这样理解的。
就是注意看对象的this的指向