在Javascript中,this关键字永远都指向函数(方法)的所有者。
如果没有进行特定的所有者,那么this指向window。
我的疑问是这两句话是否正确,能否提供示例说明这两句话不正确。
我觉得是对的,因为我见了很多例题,都能用上面的两句话说通。
但是有部分同学说上面的话是片面的,所以我想求证一下。
在Javascript中,this关键字永远都指向函数(方法)的所有者。
如果没有进行特定的所有者,那么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...]);
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
func.apply() 或者
func.call()
将会更改函数中this关键字的指向