this的指向
this
是很多人会混淆的概念,它是一个指针,执行时会确定指向谁。
我们先来看几个函数调用的场景
function foo() {
console.log(this.a);
}
var a = 1;
foo();
var obj = {
a: 2,
foo: foo
}
obj.foo()
// 实例化对象 c
var c = new foo()
分析以上代码:
对于直接调用
foo
来说,不管foo
函数被放在了什么地方,this
一定指向window
对于
obj.foo()
来说,我们只需要记住,谁调用了函数,谁就是this
,所以在这个场景下foo
函数中的this
就是obj
对象对于
new
的方式来说,this
被永远绑定在了c
上面,不会被任何方式改变this
总结:
函数直接调用时,
this
永远指向window
。比如fun();
相当于window.fun();
函数作为对象的方法被调用时,
this
指向调用方法的那个对象以构造函数的形式调用时,
this
指向new
出来的那个对象
文档更新时间: 2023-01-05 17:29 作者:孙老师