iseeu4 years ago关于this指向最近在看《你不知道的JavaScript》,其中关于this的指向的改变有隐式绑定、显式绑定、new绑定三种,显示绑定和new绑定两种的优先级这块儿没看懂。。。有大佬能指教一下吗?javascript120 views10Share
默认绑定
函数调用时无任何调用前缀的情景,指向全局,在严格模式环境中,默认绑定的this指向undefined,如:
隐式绑定
如果函数调用时,前面存在调用它的对象,那么this就会隐式绑定到这个对象上,比如
如果函数调用前存在多个对象,this指向距离调用自己最近的对象。
显式绑定
通过call、apply以及bind方法改变this的行为,指向参数提供的是null或者undefined,那么 this 将指向全局对象
new 绑定
通过 new 关键字构造的新对象,this 指向新对象本身
绑定优先级
显式绑定 > 隐式绑定 > 默认绑定
new绑定 > 隐式绑定 > 默认绑定
因为 new 和显示绑定不会同时发送,所有没有这两者的比较,比如:
这样写会报错:
call is not a function
参考:MDN: javasctipt this