JS访问对象属性两种方式的区别

391 阅读1分钟

一般情况

在JavaScript中访问对象属性的时候,常常用.点表示法,但是还有一种方括号表示法。

var person = {
        name: 'Jerry',
        age: 18
    };
console.log(person.name); // Jerry
console.log(person["name"]); // Jerry

以上访问一般属性的时候用法一样,需要注意的是使用方括号表示法的时候,对象的属性需要是字符串的形式。

区别

  • 方括号表示法可以用来通过变量访问属性。
var propertyName = 'name';
console.log(person[propertyName]); // Jerry
console.log(person.propertyName); // undefined
  • 属性名中如果包含会导致错误的字符,或者属性名是关键字、保留字,也可以使用方括号表示法。
person['first name'] ='Joke'; //first name包含一个空格
console.log(person["first name"]); // Joke
console.log(person.first name); // ERROR:Uncaught SyntaxError: missing ) after argument list
  • 方括号表示法可以动态访问对象的属性名,可以在程序运行时候创建和修改属性,点操作符不行。
var customer={};
var addr=['北京','上海','广州','深圳'];
for(i=0;i<4;i++){
    customer["address"+i]=addr[i];
}
console.log(addr); // ['北京', '上海', '广州', '深圳']
console.log(customer); // {address0: '北京', address1: '上海', address2: '广州', address3: '深圳'}
var str = "";
for(i=0;i<4;i++){
    str += customer["address" + i] + "\t";
}
console.log(str); //北京	上海	广州	深圳