this绑定的优先级

this绑定的优先级

  • 默认绑定的优先级在四条规则中最低。
  • 显示绑定和隐式绑定谁的优先级会更高?
function foo() { console.log( this.a );
}
var obj1 = { a: 2,
foo: foo };
var obj2 = { a: 3,
foo: foo };
obj1.foo(); // 2 obj2.foo(); // 3
obj1.foo.call( obj2 ); // 3 obj2.foo.call( obj1 ); // 2

通过以上代码可以发现显式绑定优先级高于隐式绑定

  • 那么隐式绑定和new绑定谁的优先级会高?
function foo(something){
    this.a = something;
}
var obj1 = {
    foo : foo
}
obj1.foo(2);
console.log(obj1.a);//2
var bar = new obj1.foo(3);
console.log(bar.a);//3

通过以上代码可以发现new绑定优先级会高于隐式绑定

  • new绑定优先级高于显式绑定(这个不大好理解,所以没解释)

  • 所以new绑定>显式绑定>隐式绑定>默认绑定

想做一定有方法,不想做一定有理由。
原文地址:https://www.cnblogs.com/angle-xiu/p/14006054.html