我是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'};
有关括号表示法的更多信息,请参见计算属性。
在JavaScript中,对属性使用引号的方式相同,但不使用引号:
var person = {n: 'mike'};
var person = {'n': 'mike'}; // same as above
但是,如果您定义属性,例如提供空间:
var person = {my property: 'mike'}; // invalid
在这种情况下,您必须使用引号:
var person = {'my property': 'mike'};
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句