this指向的绑定规则
1.默认绑定规则: console.log(this === window); //true 2.隐式绑定规则: 谁调用就指向谁(隐式丢失,参数赋值),而且父函数能够有权利改变子函数的this指向 3.显示绑定: call/apply/bind 4.new绑定
箭头函数中的this
箭头函数本身没有的this,它的this指向由它本身所在的作用域所决定 箭头函数面前四种this指向的绑定规则都是无效的
this指向的优先级
new绑定>显示绑定>隐式绑定>默认绑定
new绑定>显示绑定的例子
function foo(b) { this.a = b; }
var obj1 = {};
var bar = foo.bind(obj1);
bar(2);
console.log(obj1.a); //2
var baz = new bar(3);
console.log(obj1.a); // 2 this已经指向了一个新的对象,而且这个对象的引用给 了baz,baz拿到的引用和obj1拿到的引用不是一个东西
所以obj1.a的值不会变化,baz.a的值会变化
console.log(baz.a); // 3