obj[‘x‘]和obj[x]的区别

对象数据类型:由零到多组键值对(属性名和属性值)组成的
属性名的类型
【说法一:属性名类型只能是字符串或者Symbol】
【说法二:属性名类型可以是任何基本类型值,处理中可以和字符串互通】

 但是属性名绝对不能是引用数据类型,如果设置引用类型,最后也是转换为字符串处理的

例子

let sy = Symbol('AA');
let x = {
 0: 0
};
let obj = {
 0: 12,
 true: 'xxx',
 null: 20
};
obj[sy] = '珠峰';
obj[x] = 100; //=> obj['[object Object]']=100 会把对象变为字符串作为属性名

for (let key in obj) {
// FOR IN遍历中获取的属性名都会变为字符串
// 并且无法迭代到属性名是SYMBOL类型的属性
console.log(key, typeof key);
}

let x = 20;
let obj = {
 x: 100,
 20:10
};
// 属性名肯定得是一个值
// obj[x] 把x变量存储的值当做属性名, 获取对象的属性值 => obj[20] => undefined
// 如果有20:10这一项obj[x] => 10
// obj['x'] == obj.x 获取属性名为x的属性值 =>100 <=> obj.x 属性名为x

猜你喜欢

转载自blog.csdn.net/weixin_48927323/article/details/128005213