Function.prototype.call()

您所在的位置:网站首页 js函数的this Function.prototype.call()

Function.prototype.call()

#Function.prototype.call()| 来源: 网络整理| 查看: 265

call() 几乎等同于普通函数调用,只是将 this 作为普通参数传入,而不是作为函数所在的对象值。这类似于通用的实用函数的工作方式:你可以使用 map(array, callback) 来代替 array.map(callback),这样可以避免对 Array.prototype 进行修改,还可以将 map 用于不是数组的类数组对象(例如 arguments)。

以 Array.prototype.slice() 为例,你想要将类数组对象转换为真正的数组。你可以创建一个类似这样的快捷方式:

js

const slice = Array.prototype.slice; // ... slice.call(arguments);

请注意,你不能将 slice.call 保存并将其作为普通函数调用,因为 call() 方法也会读取它的 this 值,而这个值应该是它要调用的函数。在这种情况下,你可以使用 bind() 来绑定 call() 的 this 值。在下面的代码片段中,slice() 是一个绑定了 this 值为 Array.prototype.slice() 的 Function.prototype.call() 的版本。这意味着额外的 call() 调用可以被省略:

js

// 与前面示例中的“slice”相同 const unboundSlice = Array.prototype.slice; const slice = Function.prototype.call.bind(unboundSlice); // ... slice(arguments);


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3