堆:存储引用类型值的空间
栈:存储基本类型值和指定代码的环境
示例1
对象当中,属性名不能重复,数字属性名 === 字符串属性名
let a = {}, b = '0', c = 0;
a[b] = '天气';
a[c] = '温度';
console.log(a[b]); //温度
分析:
a[b] => a['0'] = '天气'
a[c] => a[0] = '温度'示例2
Symbol 创建唯一值的
Symbol('1') === Symbol('1') //falselet a = {}, b = Symbol('1'), c = Symbol('1');
a[b] = '天气';
a[c] = '温度';
console.log(a[b]); //天气示例3
对象作为属性会被转化成字符串
let a = {}, b = {n: '1'}, c = {m: '2'};
a[b] = '天气';
a[c] = '温度';
console.log(a[b]); //温度
分析
let obj = {};
let b = {name: 'xxx'};
obj[b] = 100 // b => [object object],相当于执行 ({name: 'xxx'}).toString()
obj => Object:{[object object]: 100}alert 弹出来的都是字符串