Javascript属性访问速度:var.property与var[";property";]的差异?

Javascript属性访问速度:var.property与var[";property";]的差异?,javascript,performance,Javascript,Performance,我有一个非常基本的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"] 它给我带来的区别是,对于第一种情况(静

我有一个非常基本的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在Javascript中没有静态属性,只有动态属性访问存在

无论在源代码文件中使用何种语法,属性总是以相同的方式进行查询

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


始终建议使用点符号。只有当Javascript属性没有在JS语法中传递的id时,才使用引号表示法。

强调代码的可重用性和可维护性。当你完成后,如果它运行缓慢,试着看看它运行缓慢的地方,这样做会更好

那么,
object.property
obj[“property”]
在效率方面有什么区别吗?我不这么认为,但我认为在您完成的工作代码遇到性能问题之前,您不应该费心。这最后一部分应该是你的担忧


即使您发现代码运行缓慢,我打赌这也不是原因。

我在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)  
var obj={test:“test”}
var time1=新日期();
var t1=time1.getTime();
对于(i=0;i<100000000;i++){
obj试验;
}
var time2=新日期();
var t2=time2.getTime();
控制台日志(t2-t1)
var time3=新日期();
var t3=time3.getTime();
对于(i=0;i<100000000;i++){
obj[“测试”];
}
var time4=新日期();
var t4=time4.getTime();
控制台日志(t4-t3)

我发现两者的性能几乎相同,
obj.test
的性能比
obj[“test”]

稍好一点,它们都是静态的,因此是相等的。选择
object.property
。如果它们相等,那么我将选择object[“property”],因为这对我是有益的。@weima-请注意,将
object[“property”]
与字符串文字一起使用将生成JSLint错误。它将建议您使用
object.property
语法。此外,每当您关心某些JavaScript代码段的性能时,您都可以使用它来自己测试。@weima这有什么好处?写和读都比较困难。@Esailija因为我正在编写一个程序来生成代码,如果我生成像
object[“property”]
这样的代码,我可以对许多属性重复使用相同的代码。这是一个太笼统的答案,对这个特定的、定义良好的,question@MikkoOhtamaa那里我详细阐述了我的建议2014年,Safari(JSC)仍然没有加入该计划。其他的实现(V8,Monkey)似乎以相同的方式处理这个问题,这可能意味着后面这些实现中的内部解析树是相同的。这在理论层面上是正确的,但现代JS引擎足够聪明,可以优化静态查找,本质上只是一个指针操作。
object.property
object[“property”]
之间没有区别,但两者都比
object[variable]
快。不要将“一个不相关的微小部分”称为有意义的区别。在V8中(在Node.js中使用)没有区别。