获取对象属性的点方法和中括号法
(以下所有内容仅用以记录学习过程中的个人理解,如有错误欢迎指出)
在JS中,获取对象属性的方式有两种:
- 通过点方法,xxx.yyy;
- 通过中括号法,xxx[yyy]。
var obj = {
name: "Alice",
age: 18
};
console.log(obj.name); //Alice
console.log(obj["age"]); //18
1. 主要区别
两种方法的主要区别如下:
1.1 关于变量作属性名
中括号法可以用变量作为属性名,而点方法不可以:
var obj = {
name: "Alice",
};
var myName = "name";
console.log(obj.name); //Alice
console.log(obj.myname); //undefined
console.log(obj["name"]); //Alice
console.log(obj[myName]); //Alice
在上例中,几乎所有的编程语言,没有引号的合法标识符都表示一个变量,这个变量单独写出来就表示一个最基本的表达式,表达式的值就是变量的值
。
个人理解是在中括号法中,变量名不打引号,属性名打引号
1.2 关于数字作属性名
中括号法可以用数字作为属性名,而点方法不可以:
var obj = {
name: "Alice",
"123": 18,
};
console.log(obj.123); //报错
console.log(obj["123"]); //Alice
1.3 关于关键字/保留字作属性名
中括号法可以使用JS的关键字/保留字作为属性名,而点方法不可以(但应尽量避免在变量/属性中使用关键字/保留字):