Javascript属性访问速度:var.properties与var[“属性”]的区别
Javascript property access speed: difference var.property vs. var["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文件推荐良好的源代码约定:
http://jshint.com/
始终建议使用点表示法。只有当您的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)
我发现两者的性能几乎相同,obj.test
的性能略好于obj["test"]
相关文章:
- javascript中对象构造函数中的var属性与this.properties
- 什么's;var'声明的变量和'这'在Javascript中创建了属性
- Javascript:如何对属性变量(例如var.hello.push)执行数组方法?太习惯AS3了
- Javascript属性访问速度:var.properties与var[“属性”]的区别
- 如何从回调函数返回 var?OOP 属性
- VAR 在所选元素之间进行计数和切换,但会复制属性
- 将全局var传递给vue组件属性
- 无法读取属性'未定义'未定义,但I'我确信var是有效的
- 无法在方法中设置未定义的属性“var”
- 带有换行符的Javascript var使用MVC Model属性
- 如何使用var访问json对象属性
- For var在对象中返回方法和属性
- jsDocToolkit方法、字段和属性don't在使用self-var时显示
- 根据视图中$scope var的属性进行筛选
- 如何使用Javascript和Ajax传递一个HTML选择标签到PHP $_POST与一个(数组)var当名称属性是一个
- 通过字符串var获取自定义对象属性
- 哪种方式最适合在JavaScript中创建对象?在对象属性之前是否需要' var '
- 属性名称“;var”;在javascript关联数组中
- javascript / jQuery使用var作为属性id
- Spring MVC 3从属性文件中填充javascript var