我是 JavaScript 的新手,但我熟悉 Python。我想弄清楚 Python 中的字典和 JS 中的对象之间的区别。
据我所知,Python中字典中的key是需要提前定义的,而JS中的对象中可以是undefined。但是,我对这些情况感到困惑:
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 property .
在 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'};
关于javascript - 我对 JavaScript 中的对象感到很困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53454802/