2014-09-11 52 views
-1

我已經看到一些以前提出的問題。但它仍然不是很清楚,當我可以使用點/括號表示來顯示對象的屬性,這就是爲什麼我在這裏問這個question.Here我有兩個例子。在我的第一個例子中的console.log顯示對象與點符號性質,但表示不確定與支架使用點符號和括號來顯示裏面的屬性...在循環中

<html> 
<body> 
<script> 
var obj={ 
    name:'lol', 
    age:10 
} 
console.log(obj[name]); 
console.log(obj.name); 
</script> 
</body> 
</html> 

在我的第二個例子我使用了。 ..in方法迭代對象屬性。在這種情況下,點符號不起作用,但括號表示法確實如此。但如果console.log()鍵顯示屬性名稱。如果是這樣,那麼爲什麼它有問題顯示屬性值我的意思是如果key === name是一個屬性,那麼obj.key應該等同於obj.name,在我看來,它應該沒有任何問題來顯示它的值。 這裏是第二個:

<html> 
<body> 
<script> 
    var obj={ 
     name:'lol', 
     age:10 
     } 
for(key in obj){ 
    console.log(key); 
    console.log(obj.key); 
} 
</script> 
</body> 
</html> 
+2

'OBJ [名稱]'=>'OBJ [ 「名稱」]'名這裏是一個字符串不是一個對象或可變的。 – melancia 2014-09-11 12:44:23

回答

4

您必須使用方括號時:

  • 屬性名稱存儲在一個變量
  • 屬性名稱包含非字符允許使用標識符

通常認爲使用點符號當你不需要按照上述規則使用方括號表示法時。


var name = "foo"; 
obj.foo === obj["foo"] === obj[name]; // All equivalent (but the middle one is generally considered to be poor style) 

var other = "one-two"; 
obj[other] === obj["one-two"]; // Equivalent 


// obj.one-two; would be "Subtract two from obj.one". 
var obj = { one: 1 }; 
var two = 2; 
(obj.one-two) === (obj.one - two) === -1; 
+0

很好的解釋.... :) ..我沒有得到第二個例子,但你可以解釋一下嗎? – 2014-09-11 12:53:27

+0

定義「第二個例子」。你不瞭解它嗎? – Quentin 2014-09-11 12:54:12

+0

「obj.one-two;將是」從obj.one中減去兩個「...你的意思是它等價於obj.one-obj.two ?? – 2014-09-11 12:59:09