什么是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的指向