this绑定优先级

现在我们可以根据优先级来判断函数在某个调用位置应用的是哪条规则。 可以按照下面的
顺序来进行判断:
1. 函数是否在 new 中调用(new 绑定) ? 如果是的话 this 绑定的是新创建的对象。
var bar = new foo()
2. 函数是否通过 callapply(显式绑定) 或者硬绑定调用? 如果是的话, this 绑定的是
指定的对象。
var bar = foo.call(obj2)
3. 函数是否在某个上下文对象中调用(隐式绑定) ? 如果是的话, this 绑定的是那个上
下文对象。
var bar = obj1.foo()
4. 如果都不是的话, 使用默认绑定。 如果在严格模式下, 就绑定到 undefined, 否则绑定到
全局对象。
var bar = foo()

posted on 2019-02-19 10:53  时光游弋  阅读(127)  评论(0编辑  收藏  举报