Art*_*anV 21 javascript backbone.js angularjs
我一直在阅读一些JavaScript库的代码.我注意到AngularJS和Backbone.js都保留了对数组函数的本地引用.例如:
var push = [].push // or array.push
Run Code Online (Sandbox Code Playgroud)
当数组是语言的结构并且应该可以全局访问时,这样做的重点是什么?
Fab*_*tté 11
因为Array原型的函数可以应用于非数组.
例如,将push项目放入类似数组的对象:
var o = { length: 0 };
[].push.call(o, 'hi');
o; //Object {0: "hi", length: 1}
Run Code Online (Sandbox Code Playgroud)
另一种常见做法是slice将arguments对象转换为本机数组:
(function() {
return [].slice.call(arguments); //[1, 2]
}(1, 2));
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,保存对这些函数的引用可以减少查找开销,使代码更小并且更加简洁.
在我看来,这主要是为了方便和可读性,因为反复写作[].arrayMethod看起来相当笨重.性能和缩小提升是额外的.
通过Angular的来源,以下是我发现的案例:
骨干也slice论点对象(在事件触发#和下划线方法代理),它也使用slice在集合#片.
| 归档时间: |
|
| 查看次数: |
340 次 |
| 最近记录: |