可绑定和可调用模式的用途是什么?
What are the uses for the bindable and callable pattern?
我以前看到过这一小段代码,但从来没有真正花时间去想它是做什么的。
var bind = Function.bind;
var call = Function.call;
var bindable = bind.bind(bind);
var callable = bindable(call);
我在概念和实践中理解.bind
和.call
的作用,但是创建上面的bindable
和callbable
函数的好处,优势或实际用途是什么?
下面是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);
现在,无论是否有用作为某种编程风格的基石,我不会说。
相关文章:
- 不确定我在PHP AJAX中使用的是什么开发模式
- 将JavaScript检测与MVC4显示模式集成的最佳方式是什么
- 在Backbone.js'上设置属性的模式是什么;模型和视图
- 使用 ES6 模块而不是显示模块模式的额外优势是什么?
- 在 Node.js 中表示状态的普遍接受模式是什么?
- 在vimperator中手动切换到“提示”模式的命令是什么
- 从嵌套数组中获取唯一元素的 JS 模式是什么
- 它是什么类型的Javascript模式
- 创建新模型的正确控制器/视图模式是什么
- 模块模式内的回调函数中的“this”指的是什么
- firefox安全模式的作用是什么
- 在javascript中拆分字符串的正确模式是什么,只留下a-z个单词
- 最好的1-1聊天模式是什么?(AJAX/CI/JQ)
- 为什么在严格模式下不允许使用八进制数字文字(解决方法是什么?)
- 使用生成器和迭代器管理流的正确模式是什么
- 这两种JavaScript模式的优缺点是什么
- 什么'声明和获取js对象的最佳方式是什么?(模式)
- 使用这种JavaScript编码模式来定义构造函数的优点是什么
- 在使用 Jasmine 进行单元测试时,javascript 揭示模块模式的缺点是什么?
- 这段代码在Javascript中是什么设计模式