6

我有一个非常基本的 JavaScript 问题。

我正在编写一个将生成 JavaScript 代码的程序。为了访问变量的属性,我有两种选择:

1. make the property access a static query. i.e.
var result = object.property

OR

2. make the property access a dynamic query, i.e.
var result = object["property"]

它对我的不同之处在于,对于第一种情况(静态查询情况),我必须为每个属性访问生成单独的代码。而在第二种情况(动态查询情况)中,我可以为每个属性重用相同的函数。

我可以决定我是否知道这对性能有什么影响?

obj.property更快还是obj["property"]

可能这也取决于将用于解释 javascript 的引擎,所以我必须提到我将使用 Rhino 作为我的 javascript 引擎。

所以请对这个问题有所了解。

谢谢,问候, VImal

4

3 回答 3

2

Javascript 中没有静态属性,只有动态属性访问存在。

无论您在源代码文件中放置什么语法,始终以相同的方式查询属性。

使用 jshint 为您的 JS 文件推荐好的源代码约定:

http://jshint.com/

始终建议使用点表示法。仅当您的 Javascript 属性没有传入 JS 语法的 id 时,才使用引号表示法。

于 2012-07-20T13:35:30.857 回答
0

强调代码的可重用性和可维护性。完成后,如果它运行缓慢,请尝试查看它在哪里运行缓慢并更好。

object.property那么,在效率和效率方面有什么区别obj["property"]吗?我不这么认为,但大多数情况下,我认为在完成的工作代码遇到性能问题之前,您不应该打扰。最后一部分应该是你的担心。

即使你发现你的代码运行缓慢,我敢打赌这不会是原因。

于 2012-07-20T13:37:43.180 回答
-1

我在 Node.JS 上做了这个测试

var obj = {test:"test"}

var time1 = new Date();
var t1 = time1.getTime();  

for(i = 0; i < 1000000000; i++){
  obj.test;
}

var time2 = new Date();
var t2 = time2.getTime();

console.log(t2-t1)

var time3 = new Date();
var t3 = time3.getTime();

for(i = 0; i < 1000000000; i++){
  obj["test"];
}

var time4 = new Date();
var t4 = time4.getTime();

console.log(t4-t3)  

我发现两者的表现几乎相同,obj.test表现略好于obj["test"]

于 2012-07-20T14:06:58.233 回答