在JS中,我们取对象的属性值一般都是用点(.)表示,如Person.name,Person.age,但是有时候也会遇到Person[name]这种,那么他们具体有什么区别呢?
中括号[]:
语法可以用变量作为属性名或者访问,而点语法不可以;
常规变量量
function createPerson(name) {
var person = {}//new Object()
person.name = name
person.age = 36
person.sayName = sayName
return person
}
var obj2 = createPerson('唐僧')
console.log(obj2.name) //输出:唐僧
console.log(obj2["name"]) //输出:唐僧
特殊变量名用[]:
中括号语法可以在属性名中包含会导致语法错误的字符,如空格,也可以在属性名中包含关键字或者保留字;
k-k有横杠一条,不能直接用obj.k-k, 需要用obj['k-k']
let obj = {
"k-k": 'kk',
name: 'lani'
}
//特殊属性名用['']
console.log(obj["k-k"]) //输出:kk
console.log(obj.name); //输出:lani
总结:
点操作符(.): 静态的。
1、后面必须是一个以属性名命名的简单标识符;
2、标识符必须直接出现在js程序中,它们不是数据类型,因此程序无法修改它们。
中括号操作符([]): 动态的。
1、方括号里必须是一个计算结果为字符串的表达式,属性名通过字符串表示;
2、字符串是js的数据类型,在程序运行时可以修改和创建它们。