首页 > javascript方法中this的指向问题。

javascript方法中this的指向问题。

  1. 在Javascript中,this关键字永远都指向函数(方法)的所有者。

  2. 如果没有进行特定的所有者,那么this指向window。

我的疑问是这两句话是否正确,能否提供示例说明这两句话不正确。

我觉得是对的,因为我见了很多例题,都能用上面的两句话说通。
但是有部分同学说上面的话是片面的,所以我想求证一下。


js中this永远指向调用者,谁调用该函数,this就指向谁
//创建dog对象
var dog={name:'dog'};
//dog的walk方法
dog.walk=function(){

//这里的this也是指向调用者
console.log(this);
function a(){
    //这里的this指向调用者
    console.log(this);
};
//因为这里没有指定调用者,所以就隐式指定调用者为window对象
a();

};
//调用dog的walk方法
dog.walk();
这里dog.walk()中的this就指向dog对象
一般一个函数创建时都会附加给某个对象(也就是指定了函数的所有者),而没有指定调用者的情况下,该函数的调用者就为默认的window对象,同时可以通过function.call()与function.apply()来改变this的指向
对于上面的,可以这样
dog.walk.call(window);或者dog.walk.apply(window);来改变调用者为window
通过call()调用函数的语法格式为:
函数引用.call(调用者,参数1,参数2…)
通过apply()调用函数的语法格式为:
函数引用.apply(调用者,[参数1,参数2...]);


你需要看看这个:http://www.cnblogs.com/TomXu/archive/2012/01/17/2310479.html
个人自己总结的:http://my.oschina.net/Karon/blog/495851
希望能帮到你,不谢~


func.apply() 或者
func.call()
将会更改函数中this关键字的指向

【热门文章】
【热门文章】