小编cst*_*sik的帖子

了解javascript借用方法

关于如何将函数转换arguments为真实数组有很多解释.

但是,当你借助于简化代码时,我发现它非常有趣bind.

MDN Array.prototype.slice - 类似于数组的对象

MDN Function.prototype.bind - 创建快捷方式

例如:

function list() {
  return Array.prototype.slice.call(arguments);
}

var list1 = list(1, 2, 3); // [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

简化通话:

var unboundSlice = Array.prototype.slice;
var slice = Function.prototype.call.bind(unboundSlice);

function list() {
  return slice(arguments);
}

var list1 = list(1, 2, 3); // [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

如果您使用apply而不是call:它的工作方式相同:

var slice = Function.prototype.apply.bind(unboundSlice);
Run Code Online (Sandbox Code Playgroud)

通过使用call任何函数实例甚至可以缩短它,因为它与原型中的一个相同,并且与slice数组实例相同:

var slice = alert.call.bind([].slice);
Run Code Online (Sandbox Code Playgroud)

你可以试试

var slice = alert.call.bind([].slice);

function …
Run Code Online (Sandbox Code Playgroud)

javascript

6
推荐指数
1
解决办法
1081
查看次数

标签 统计

javascript ×1