[英]I am so confused about Object in JavaScript
我是JavaScript的新手,但我熟悉Python。 我試圖弄清楚Python中的Dictionary和JS中的Object之間的區別。
據我所知,Python中字典中的鍵需要提前定義,但在JS中的對象中可能未定義。 但是,我對這些案件感到困惑:
var n = 'name';
var n2 = n;
var person = {n: 'mike'};
person.n # 'mike'
person['n'] # 'mike'
person[n2] # undefined
person.n2 # undefined
person['name'] # undefined
person.'name' # undefined
我很困惑,為什么這三個變量n
, n2
和name
不相等,因為與Python相比:
n = 'name'
n2 = n
person = {n:'mike'}
person[n] # 'mike'
person[n2] # 'mike'
person['name'] # 'mike'
我想這可能是因為在Python中, n
和n2
都指向唯一的字符串對象'name'
,所以它們是相同的。 但有人可以向我解釋JS背后的機制嗎?
分配時:
var person = {n: 'mike'};
n不是引用變量,而是它自己的屬性。 如果需要引用變量,則需要使用括號表示法:
var person = {[n]: 'mike'};
有關括號表示法的更多信息,請參閱computed屬性 。
在JavaScript中,使用quote屬性是相同的而不使用quote:
var person = {n: 'mike'};
var person = {'n': 'mike'}; // same as above
但是如果你定義屬性就像給出空間:
var person = {my property: 'mike'}; // invalid
在這種情況下,您必須使用引用:
var person = {'my property': 'mike'};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.