使用 JS 原型构建大型 JS 应用程序的性能优势
performance benefits of using js prototype for structuring large js application
这样做有什么好处:
HB.somepackage = HB.somepackage || {};
HB.somepackage.SomeGoodClass = function(someSelector){
this.someSelector = someSelector;
}
HB.somepackage.SomeGoodClass.prototype.doSomeStuff = function(){
var $obj = $(this.someSelector);
// work your magic with $obj;
};
与此相反:
HB.somepackage = HB.somepackage || {};
HB.somepackage.someSelector = "HardCodedValueHere";
HB.somepackage.someOtherSelector = "AnotherHardCodedValueHere";
HB.somepackage.SomeReallyBadClass = function(){};
HB.somepackage.SomeReallyBadClass.prototype.doSomeStuff = function(){};
这个问题有很多需要考虑。但为了涵盖基础知识,它归结为原型继承和查找。
您的第一个示例:
HB.somepackage = HB.somepackage || {};
HB.somepackage.SomeGoodClass = function(someSelector){
this.someSelector = someSelector;
}
HB.somepackage.SomeGoodClass.prototype.doSomeStuff = function(){
var $obj = $(this.someSelector);
// work your magic with $obj;
};
这使得someSelector
成为SomeGoodClass
的属性,可以根据被调用方而变化。如果我要创建/调用绑定到不同上下文的函数,this.someSelector
对应于该被调用方上下文:
var newObject = {someSelector : 'oldSelector'};
HB.somepackage.SomeGoodClass.apply(newObject, 'newSelector');
newObject.someSelector; // 'newSelector'
HB.somepackage.SomeGoodClass.someSelector; // undefined
代码笔:http://codepen.io/anon/pen/yeENXj
所以在这里,你可能认为在SomeGoodClass
this.someSelector会引用SomeGoodClass.someSelector
但它没有。
在第二个示例中:
HB.somepackage = HB.somepackage || {};
HB.somepackage.someSelector = "HardCodedValueHere";
HB.somepackage.someOtherSelector = "AnotherHardCodedValueHere";
HB.somepackage.SomeReallyBadClass = function(){};
HB.somepackage.SomeReallyBadClass.prototype.doSomeStuff = function(){};
someSelector
或多或少被用作一种常量,需要在somepackage
的其他函数中引用
根据应用程序的上下文和所需/首选的编码实践,可能需要一个而不是另一个。在第二个示例中,在SomeGoodClass
函数上调用apply()
或call()
显然不会更改类的"内部"someSelector
属性,但您也无法从函数/对象中查找该属性。
相关文章:
- 在Three.js中导出网格会提高性能吗
- immutable.js与嵌套映射/对象的比较/相等性能
- 性能与模块化:将JS集成到PHP或单独的custom.JS中
- 设置1400个Raphael.js对象的不透明度动画会影响动画性能
- ExtJS类的最佳实践最终导致了太多的.JS文件.性能怎么样
- Knockout.js性能-有多少可观察性
- 具有200+矢量形状的画架JS:性能和美学
- 三个js性能如何使使用图像纹理更快
- 选择.js性能
- React js 性能工具插件抛出“无法读取未定义的属性'计数'”
- 可排序,js性能很慢
- 请求进程中的节点 js 性能
- Three.js性能与对象数量有关
- 奇怪的JS性能问题
- Node.js性能-读取文件一次或每次请求
- JS性能:为什么不加载未初始化或删除的元素?
- js -性能低,只有40 "简单"模型
- 在Redux中切换到Immutable.js.性能影响是什么?对组件的影响是什么? '语法
- Internet Explorer中的传单.js性能较差
- Node.js性能瓶颈