javascript语言精粹----------------------读书笔记之关于this的理解问题

来源:互联网 发布:网络电视怎么看中央8吗 编辑:程序博客网 时间:2024/05/16 05:30

第四章:

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

原创粉丝点击