一、作用
- call和apply都是为了解决扭转this的指向。作用都是雷同的,只是传参形式不同。
- 除了第一个参数外,call能够接管一个参数列表,apply只承受一个参数数组。
- bind和其余两个办法作用同样是可能扭转this指向,只是该办法会返回一个函数。并且咱们能够通过bind实现柯里化
二、用法示例
const steven = { name: 'steven', phoneBattery: 70, chargeByCall: function (level1, level2) { this.phoneBattery = level1 + level2 }, chargeByApply: function (level1, level2) { this.phoneBattery = level1 + level2 }, chargeByBind: function (level1, level2) { this.phoneBattery = level1 + level2 }}const tom = { name: 'tom', phoneBattery: 5,}steven.chargeByApply.call(tom, 90, 2); // call传参应用参数列表形式console.log(tom.phoneBattery); // 92steven.chargeByApply.apply(tom, [20, 50]); // apply传参应用参数数组形式console.log(tom.phoneBattery); // 80const tomCharge = steven.chargeByBind.bind(tom); // bind返回函数,调用该函数实现this指向扭转tomCharge(70, 6);console.log(tom.phoneBattery); // 76