我对JavaScript中的Object感到困惑

极光:

我是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

我很困惑的是,为什么这三个变量nn2并且name是不相等的,因为与在Python比较:

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

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

我想这可能是由于这样的事实:在Python,nn2都指向唯一的字符串对象'name',所以它们是相同的。但是有人可以向我解释JS背后的机制吗?

Bhojendra Rauniyar:

当您分配像:

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章