JS 获取对象属性值 [] 和.区别

[ ] 和.的区别:

相同点:都可以获取到 object 的属性值

不同点

  • 1、 [ ] 运算符可以使用字符串变量的内容作为属性名,点运算符不能

  • 2 、[ ] 运算符可以用纯数字作为属性名,点运算符不能

  • 3 、[ ] 运算符中必须是 String 类型

测试如下

let user = {
     
  id: 8,
  'name': 'xia',
  地址: '西安',
  1: '123'
};
console.log(user["id"]);
console.log(user.id);

console.log(user["地址"]);
console.log(user.地址);

// [ ] 运算符可以用纯数字作为属性名,点运算符不能
console.log(user["1"]);
// 报错
// console.log(user.1);

// [ ] 运算符可以使用字符串变量的内容作为属性名,点运算符不能
for (let key of Object.keys(user)){
     
  console.log(typeof key);
  // 全是 undefined 因为会将 key 任务 user 对象的属性,而 user 没有 key 这个属性
  console.log(user.key);
  // 正常显示
  console.log(user[key]);
}

[ ] 另一种用法 ,有个疑惑,希望知道的给说说,就是看着数组有四个值,为什么长度为2,像这种数据结构底层是如何存储的,希望知道的解释一下,谢谢

let array = [];
array.push(1);
array["id"] = 8;
array["name"] = "xia";
array.push("西安");
console.log(typeof array);// object
console.log(array);       // [ 1, '西安', id: 8, name: 'xia' ]
console.log(array[0]);    // 1
console.log(array[2]);    // undefined
console.log(array["id"]); // 8
console.log(array.id);    // 8

你可能感兴趣的:(node,js,javascript)