可绑定和可调用模式的用途是什么?

What are the uses for the bindable and callable pattern?

本文关键字:是什么 模式 绑定 调用      更新时间:2023-09-26

我以前看到过这一小段代码,但从来没有真正花时间去想它是做什么的。

var bind = Function.bind;
var call = Function.call;
var bindable = bind.bind(bind);
var callable = bindable(call);

我在概念和实践中理解.bind.call的作用,但是创建上面的bindablecallbable函数的好处,优势或实际用途是什么?

下面是bindable用例的上下文示例。

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);

这个模式可以用来做什么?

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);

现在,无论是否有用作为某种编程风格的基石,我不会说。