[英]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文件推薦良好的源代碼約定:
始終建議使用點符號。 僅當您的Javascript屬性沒有傳入JS語法的id時才使用引號表示法。
強調代碼的可重用性和可維護性。 完成后,如果運行緩慢,請嘗試查看運行緩慢且更好的情況。
那么,就object.property
, 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"]
好一點點
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.