JS中判断this指向问题总结

我们可以根据优先级来判断函数在某个调用位置应用的是哪条规则,可以按照下面的顺序进行判断:

1.函数是否在new中调用(new 绑定)?是的话 this 绑定的是新创建的对象

var bar = new foo();

2.函数是否通过 call、apply(显示绑定)或者硬绑定调用?如果是的话,this绑定的是指定的对象

var bar = foo.call(obj2);

3.函数是否在某个上下文对象中调用(隐式绑定)?如果是的话,this绑定的是那个上下文对象

var bar = obj1.foo();

4.如果都不是的话,使用默认绑定,如果在严格模式下,就绑定到undefined,否则绑定到全局对象

var bar = foo();

节选自《你不知道的Javascript》(上卷)

猜你喜欢

转载自blog.csdn.net/RedaTao/article/details/108145988
今日推荐