var person = {name: "Johen", address: "USA"}
访问人物属性的以下两种方式有区别吗?对性能有什么影响吗?
var name = person.name
var address = person["address"]
谢谢!
它们是相等的。如果键包含字符串之外不允许的字符,则需要数组语法。这同样适用于使用动态键很久以前人们习惯使用像foo = eval('obj.' + propname);
这样杂乱的方法但foo = obj[propname];
当然要好得多
在我看来,obj.property
语法更好,因为它更短,更自然。
对象属性的"dot"one_answers"方括号"访问方法在ECMA-262第11.2.1节中都有描述。点访问只能在名称符合标识符允许字符规则的有限情况下使用。
方括号符号可用于从表达式求值的名称。它的意思是"对表达式求值并使用结果作为属性名"所以你可以这样做:
function foo() {return 'foo'}
var obj = {};
obj[foo()] = 'foo';
数组属性的访问方式与对象属性完全相同——数组只是具有特殊长度属性的对象。
它们基本相同,但主要有两点不同第一个是当您尝试使用数字键从对象访问数据时出现的。
最好使用示例
来清除。const countries = {1: 'UAE', 2: 'UK'}
console.log(countries.1) //error
console.log(countries['1']) //'UAE'
console.log(countries[1]) //'UAE'
如果你有一个变量的键值你必须使用[]
const countries = {first: 'UAE', second: 'UK'}
const value2 = 'first';
console.log(countries.value2) //error
console.log(countries[value2]) //'UK'