第四章:
1 关于this的用法,书中写了四种调用模式:
a) 方法调用模式,在对象中定义了一个函数时,该函数称为方法,其this理解为该对象
var test = {
a:functio(){console.log(this);}
};
test.a();
this指向的就是test本身,这个很好理解。不好理解的来了
b)函数调用模式,在某个函数中调用了this,它又不是对象的属性时,this被设置为全局,即window。这样会带来一个问题,如果在某个对象方法中再希望执行一个函数,该函数中的this不会指向对象,却会指向window!好在有一个很简单的解决办法,如下:
test. a=function() {
var that = this;
var b = funciton(){
console.log(this);//window!
console.log(that);//test!
}
}
也就是说在调用函数之前,先给某个值赋予this。然后再函数中调用该值,可以取到对象的执行环境。
c)构造器调用模式。
在使用构造函数模式创建对象时,如果使用new方法,构造函数中的this会指向新创建出来的对象上,不推荐这种方法,所以此处不详说。
d)apply调用模式,apply是javascript中神奇的东西,光他就可以写一篇很长的博文,此处我引用别人写的一篇详细的说明:
http://blog.csdn.net/qianzai5765638/article/details/6952321
。