我在很多Backbone.Views中使用_.bindAll
。
_.bindAll(this, 'render', 'addOne', 'addAll', 'someFunctionA', 'someFunctionB');
虽然重构这个变得非常乏味,因为我需要保持视图方法和名称列表同步。这两种方式都会导致简单的错误。
由于存在bindAll
的短版本,这将消除这种需求,我想知道存在哪些缺点(性能,可读性,灵活性......)并且你认为它们可以接受获得一点点提高生产力。
_.bindAll(this);
答案 0 :(得分:4)
使用这种形式的bindAll没有实际的性能损失。但是,如果您因某种原因不希望方法绑定到this
,那将会非常痛苦。
但是,您可能会发现您不需要像您想象的那样经常使用bindAll。绑定到事件处理程序的所有方法(使用事件哈希)将自动绑定到this
。
此外,当您明确绑定事件时,可以在第三个参数中传递this
绑定。例如:
this.model.bind('change', this.render, this)
答案 1 :(得分:4)
我在骨干项目中使用了_.bindAll(this)
一段时间了。在对代码进行分析之后,我意识到对_.bindAll
的调用占用了所有函数调用的显着部分
根据绩效测试的结果http://jsperf.com/underscore-bindall-this-vs-bindall-this-params
似乎显式方法命名更高效(特别是对于具有大量功能的对象)