js访问对象时点表示法与方括号表示法的区别

1,063 阅读1分钟

在刚接触js中的对象时,发现点表示法和方括号表示法都可以访问到对象内部的值,大多数情况下两种方式都可以使用,但二者在以下特定场合下还是有些区别的:

首先创建一个名为obj的对象,此时需要注意的是,使用方括号表示法访问对象时,应当把属性以字符串的形式放在方括号中

let obj = {
    key:val
}
console.log(obj.key);   // 点表示法访问对象
console.log(obj['key']);   // 方括号表示法访问对象
  1. 当key为数字时,应当使用方括号表示法来进行对象访问(键名为数字时,自动转换为字符串,方括号内可不用加引号)
let obj = {
    1:1024,
    2:2048
}
console.log(obj.1);   // false
console.log(obj[1]);   // true
  1. 当key中包含空格时,应当使用方括号表示法来进行对象访问
let obj = {
    first name:1024,
    second name:2048
}
console.log(obj.first name);   // false
console.log(obj[first name]);   // true
  1. 方括号内部的键值加引号与不加引号的区别
let first = 'second';
let obj = {
    first:'张三',
    second:'李四'
}
console.log(obj.first);   // 用点表示法,此时的first为字符串类型,输出为'张三'
console.log(obj[first]);   // 此时first被当做变量处理,输出为'李四'
console.log(obj['first']);   // 此时方括号里为字符串类型,因此访问obj对象内部的first属性,输出为'张三'

综合以上几点来说,方括号表示法的应用范围要广于点表示法的应用范围,但在多数情况下,访问对象属性时还是会使用点表示法,这也是很多面向对象语言中通用的语法。
(本人前端小白一枚,欢迎各路大神来进行探讨补充和纠错)