在刚接触js中的对象时,发现点表示法和方括号表示法都可以访问到对象内部的值,大多数情况下两种方式都可以使用,但二者在以下特定场合下还是有些区别的:
首先创建一个名为obj的对象,此时需要注意的是,使用方括号表示法访问对象时,应当把属性以字符串的形式放在方括号中
let obj = {
key:val
}
console.log(obj.key); // 点表示法访问对象
console.log(obj['key']); // 方括号表示法访问对象
- 当key为数字时,应当使用方括号表示法来进行对象访问(键名为数字时,自动转换为字符串,方括号内可不用加引号)
let obj = {
1:1024,
2:2048
}
console.log(obj.1); // false
console.log(obj[1]); // true
- 当key中包含空格时,应当使用方括号表示法来进行对象访问
let obj = {
first name:1024,
second name:2048
}
console.log(obj.first name); // false
console.log(obj[first name]); // true
- 方括号内部的键值加引号与不加引号的区别
let first = 'second';
let obj = {
first:'张三',
second:'李四'
}
console.log(obj.first); // 用点表示法,此时的first为字符串类型,输出为'张三'
console.log(obj[first]); // 此时first被当做变量处理,输出为'李四'
console.log(obj['first']); // 此时方括号里为字符串类型,因此访问obj对象内部的first属性,输出为'张三'
综合以上几点来说,方括号表示法的应用范围要广于点表示法的应用范围,但在多数情况下,访问对象属性时还是会使用点表示法,这也是很多面向对象语言中通用的语法。
(本人前端小白一枚,欢迎各路大神来进行探讨补充和纠错)