我是JavaScript的新手,但对Python很熟悉。我正在试图弄清Python中的字典和JS中的对象之间的区别。
据我所知,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背后的机制吗?
{n: "mike"}
相当的是{"n": "mike"}
。 - Thilo