Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
访问JavaScript对象的最快方式是什么?_Javascript - Fatal编程技术网

访问JavaScript对象的最快方式是什么?

访问JavaScript对象的最快方式是什么?,javascript,Javascript,我想知道访问JavaScript对象、点运算符或[]的最佳方式是什么: data.property或data[“property”]?两者速度相同。此外,如果您担心访问附加到引用的字段的速度,我认为您可能在调整代码时走错了路。两者或多或少都是相同的,除了Safari中的,在这种情况下,点表示法要快得多 将DOM操作、DOM大小和CSS复杂性作为Javascript应用程序性能问题的主要来源,这样做会更好 也就是说,如果在循环中执行大量属性访问,则局部变量将比属性访问或数组查找快得多。如果要重复访

我想知道访问JavaScript对象、点运算符或
[]
的最佳方式是什么:


data.property
data[“property”]

两者速度相同。此外,如果您担心访问附加到引用的字段的速度,我认为您可能在调整代码时走错了路。

两者或多或少都是相同的,除了Safari中的,在这种情况下,点表示法要快得多

将DOM操作、DOM大小和CSS复杂性作为Javascript应用程序性能问题的主要来源,这样做会更好

也就是说,如果在循环中执行大量属性访问,则局部变量将比属性访问或数组查找快得多。如果要重复访问对象属性,请将其复制到变量中顺便说一句,不要使用“with”语句。它可以通过在作用域链中引入另一个对象来降低局部变量的访问速度


在局部范围中定义的变量将比在全局范围中定义的变量更快地被访问,因为Javascript引擎首先在本地查看所有变量,然后检查全局范围中的所有变量。作用域也可以嵌套,因此变量所在的嵌套链越远,查找所需的时间就越长。这就是为什么如果要多次访问局部变量,最好将“document”之类的内容缓存在局部变量中。

我大胆猜测,
data.property
的速度稍微快一点,但可能很难测量。实际上,访问对象属性的最佳方式通常与速度无关。点运算符用于语法糖(即,
this.hasElements()
this[“hasElements”]()
)更容易在大脑中读取、写入和处理,只要可能,并且当键名是变量或包含非法字符时,使用括号。

如果要访问的属性已知,使用
data.prop
。否则使用
数据[prop]
。请注意,这些是不同的<但是,代码>数据[“prop”]与
数据相同。prop
。请注意引号。我之所以这样说,是因为我认为使用
运算符更为惯用。当然,您可能知道要访问的属性,但仍然必须使用关联数组表示法。例如,如果
prop
包含点表示法中不允许的字符。