首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >java-script对象减速结构在维护,性能和内存方面都很好?

java-script对象减速结构在维护,性能和内存方面都很好?
EN

Stack Overflow用户
提问于 2018-08-17 04:52:59
回答 1查看 0关注 0票数 0

我的对象结构类似于下面的形式,我可以用3种方式编写:

1.在所有地方使用完全限定名称。

context.flow.myobject = {}; context.flow.myobject.SomeValue = 11; context.flow.myobject.IsNumber = function(){ //Check if it is a number. }; context.flow.myobject.Calculate = function(value){ if(context.flow.myobject.IsNumber()){ // Preform calculations. // Will use this variable at multiple place in // this function as **context.flow.myobject.SomeValue** } };

2.使用内联和此关键字:

context.flow.myobject = { SomeValue: 11, IsNumber: function(){ //Check if it is a number. }, Calculate: function(value){ if(this.IsNumber()){ // Preform calculations. // Will use this variable at multiple place in // this function **this.SomeValue** } } };

3.使用引用的对象:

context.flow.myobject = {}; context.flow.myobject.SomeValue = 11; var myobject = context.flow.myobject; myobject.IsNumber = function(){ //Check if it is a number. }; myobject.Calculate = function(value){ if(context.page.main.MY_VAR.IsNumber()){ // Preform calculations. // Will use this variable at multiple place in // this function **myobject.SomeValue** } };

4.或者我可以使用类似于第二种方法的构造函数:

context.flow.myobject = function(){ this.SomeValue = 11; this.IsNumber: function() { //Check if it is a number. }; this.Calculate: function(value) { if(this.IsNumber()) { // Preform calculations. // Will use this variable at multiple place in // this function **this.SomeValue** } } };

EN

Stack Overflow用户

发布于 2018-08-17 14:52:21

可以通过将something.far.away作为快捷方式(本地化)来增加性能:

function foo(){ var farAway = something.far.away; // do many things with farAway; }

是将far.away.things本地化。例如:

something.far.away = 42; function foo(x, y){ var far = something.far.away; // localize var ret = 0; for(var i=0; i< 1000000; i++){ ret += far + x - far / y; } return ret; }

如果只使用一次,则性能不会提高:

function nope(x, y){ // NO performance increase, this is actually less performant // because we have to store a new var, then go retrieve it! var far = something.far.away; return far + x + y; }

可以本地化功能,所以在你的例子中,可能将#3清理为:

// objects are "by reference", see link after code block. context.flow.myobject = {}; var obj = context.flow.myobject; // localize obj.SomeValue = 11; obj.IsNumber = function(value) { //Check if it is a number. } obj.Calculate = function(value) { if(obj.IsNumber(value)) { var val = obj.SomeValue; // localize // Preform calculations. // Will use this variable at multiple place in // this function **myobject.SomeValue** } }

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100002233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档