我之前看到过这一小段代码,并且从来没有真正花时间绕过它的工作。
var bind = Function.bind;
var call = Function.call;
var bindable = bind.bind(bind);
var callable = bindable(call);
我在概念和实践中理解.bind
和.call
做了什么,但创建上述bindable
和callbable
函数的好处,优势或实际用途是什么? ?
以下是可绑定用例的上下文示例。
var bound = bindable(db.find, db).apply(null, arguments);
var findable = bindable(db.find, db);
var bound = findable.apply(null, arguments);
var bound = findable(1, 2, 3);
这种模式可以用于什么?
答案 0 :(得分:3)
好callable
实际上是
bind.bind(call);
“执行”摘要是callable
函数允许您将一个函数设计为在某个prototype
对象上作为函数运行,并创建一个新函数,该函数接受一个参数用作价值this
。
作为示例,请考虑Array原型上的.slice()
方法。它通常用于将节点列表或arguments
结构之类的东西转换为数组。这通常是这样做的:
var args = [].slice.call(arguments, 0);
callable
函数让我们创建一个独立的函数,它的工作方式类似:
var cslice = callable(Array.prototype.slice);
var args = cslice(arguments, 0);
现在,无论这是有用还是不作为某种编程风格的基石,我都不会说。