今天,突发奇想,突然想到这个奇葩的问题,实践才是检验真理的唯一标准,下面一一举例验证这个问题的可能性😁😁😁。
首先,创建空对象的数组的方式有多种
👀👀方案1:直接创建数组
代码展示
var arr=[{},{},{}]
控制台验证
结论
这种方式创建数组中的每一个空对象指向的地址都是不同的。
👀👀 方案2:实例化方式创建数组
代码展示
var arr=new Array()
arr[0]={};arr[1]={}
console.log(arr[0]===arr[1])
控制台验证
结论
这种方式创建数组中的每一个空对象指向的地址都是不同的
👀👀方案3:填充方式fill()
创建数组
代码展示
var arr=new Array(10).fill({})
控制台验证
结论
这种方式创建数组中的每一个空对象指向的地址都是相同的
扩展
那么在空对象中插入属性和属性值, 空对象的地址还会不会指向同一处???
结论:事实证明,空对象不能用填充的方式插入数组,因为空对象都是相同的,他们的地址指向的都是同一处。
👀👀 方案4:Array.from
创建数组
代码展示
var arr=Array.from({length:10},()=>{return {}})
控制台验证
结论
这种方式创建数组中的每一个空对象指向的地址都是不同的
💕最hou的总结:
如果创建空对象组成的数组,用直接创建的方式,Array,from填充的方式,new实例化的方式,他们的空对象指向的地址都是不同的,而用new Array(10).fill()方式填充创建的数组每一个空对象指向的地址都是相同的。