簡體   English   中英

Javascript屬性訪問速度:差異var.property與var [“property”]?

[英]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.propertyobject.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"]好一點點

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM