簡體   English   中英

我對JavaScript中的Object很困惑

[英]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

我很困惑,為什么這三個變量nn2name不相等,因為與Python相比:

n = 'name'
n2 = n
person = {n:'mike'}

person[n]  # 'mike'
person[n2] # 'mike'
person['name'] # 'mike'

我想這可能是因為在Python中, nn2都指向唯一的字符串對象'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.

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