如何在Javascript中有效地更新对象

时间:2011-07-30 17:50:34

标签: javascript oop performance

我正在开发一个有趣的javascript游戏,我有一个角色对象数组。我定期对对象中的字段进行检查(如字符[i] .xpos,字符[i] .ypos等)。将函数添加到类的原型以处理向左和向右移动,并定期调用它,或者更有效地使用调整角色对象的x和y pos的全局函数是否更有效?

感谢您的帮助!


编辑: 谢谢你的答案。我会尝试更具体。我有一个全局更新函数,它使用一个间隔调用,并在其中有一堆代码,用于更改对象的属性,如:

globalupdate() {
  characters[i].posx++;
  characters[i].posy++;
  ... and more code like that
}

在该类中编写原型函数并调用它会更快吗?像:

globalupdate() {
   characters[i].update();
}

感谢所有快速回复!

2 个答案:

答案 0 :(得分:1)

我刚刚阅读了 John Resig jQuery 的作者)关于该主题的文章。从这一点来看,最重要的是没有多个计时器(即间隔和超时),因为存在冲突的可能性。

因此,如果您的全局功能将导致更少的计时器,这可能对整体性能有利。


修改:我是否正确了解您的更新,这是您想要了解的内容:给定一段代码,

{
    object1.<key> = <value> ;
    object2.<key> = <value> ;
    /* ... */
    objectN.<key> = <value> ;
}

和另一个代码块,

{
    object.prototype.change = function( ) { this.<key> = <value> ; } ;

    list = [object1,object2,/* ... */,objectN] ;
    for(i = 0 ; i < list.length ; i++) list[i].change( ) ;

}

哪一个会执行得更快?

答案 1 :(得分:0)

对于所有性能问题,只需1分钟就可以为每个案例编写一个测试代码,请尝试。

我认为与更新的“可见”部分相比,差异是可以忽略的,即更新DOM等。还要记住,根据使用的浏览器,它可能会有所不同。