Javascript属性访问速度:var.properties与var[“属性”]的区别

Javascript property access speed: difference var.property vs. var["property"]?

本文关键字:var 属性 区别 properties 访问 速度 Javascript      更新时间:2023-12-02

我有一个非常基本的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文件推荐良好的源代码约定:

http://jshint.com/

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

增强代码的可重用性和可维护性。当你完成后,如果它运行缓慢,试着看看它在哪里运行缓慢,然后做得更好。

那么,object.propertyobj["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)  

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