【问题标题】:Cost of creating objects in JavaScript/JQuery在 JavaScript/JQuery 中创建对象的成本
【发布时间】:2012-07-07 19:59:06
【问题描述】:

有人可以比较和对比在 JavaScript/JQuery 中创建对象的成本和简单的变量声明吗?

例如:

var G = {}
G.obj = (function(){
        var x = 10; //'private' attribute, can be accessed internally only
        G.y   = 20; //'public'  property
        });

x 显然有一个本地范围,因为 Y 可以通过带有选择器的 G 公开访问。后一种方法是否涉及任何重大开销?

谢谢。

编辑:我意识到这听起来可能是一个愚蠢的问题,但我正在为 HTML5 游戏规划一个架构,在我前进的过程中我必须牢记这些小事。

【问题讨论】:

  • 如果您打算给我负面反馈,我至少会感谢您提供一个小评论来解释什么是什么。
  • 我真的,真的建议阅读this answer 来了解更多类似的问题(顺便说一句,通过搜索很容易找到)——尤其是“过早优化”部分。
  • 您好,感谢您与我联系;如果我在搜索中找到答案,我不会发布我的问题。在打扰这里的人之前,我会尝试做我的研究。无论如何,谢谢。

标签: javascript jquery


【解决方案1】:

首先,您并没有真正执行代码块中的函数。

G.obj = (function(){
    var x = 10; //'private' attribute, can be accessed internally only
    G.y   = 20; //'public'  property
    })();

现在,就创建局部变量与全局属性的成本而言,AFAIK 访问(获取/设置)全局属性会稍微贵一些,因为您正在遍历范围链。范围链中的属性越高,成本越高。但是,恕我直言,这不是一个问题。

更大的问题是您选择在全球商店中粘贴东西。使用局部变量很有帮助,因为局部变量在函数完成执行后不会一直存在。因此,您不会在内存中保留不必要的状态。这个 IMO 应该推动您的设计,让您的应用程序保持状态。

【讨论】:

  • 欣赏输入。使用 JavaScript 设计大型应用程序与我习惯使用的常规编程语言(例如 C++)有些不同,后者不赞成全局变量。但我可以欣赏他们在这种情况下的存在。
  • 这是一篇非常有趣的文章:developer.mozilla.org/en/JavaScript/Memory_Management
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-28
  • 1970-01-01
相关资源
最近更新 更多