this的四种绑定方式
-
默认绑定
-
//独立函数调用时绑定 function foo(){ "use strict"; console.log(this.a); } var a=2; foo();//TypeError: this is undefined
-
function foo(){ //"use strict"; console.log(this.a); } var a=2; foo();//2
-
-
隐式绑定
- 绑定对象链最后一层的this
- 隐式丢失
- 转引用的问题,学过C++应该好理解,类似传原始函数的指针
-
显示绑定
- call、apply、bind
-
new绑定
- 优先级:new>显示绑定>隐式绑定
-
绑定例外
- 使用null、undfined或者自定义空对象(使用Object.create(null))展开数组作为参数或者对函数柯里化
-
软绑定
- 书p98,了解即可
-
箭头函数,ES6
- 建议不要混用