关于javascript:从内存的角度看给一个对象初始化null和创建一个空对象的差别

32次阅读

共计 451 个字符,预计需要花费 2 分钟才能阅读完成。

给一个对象初始化的实质(null)

var stu = null 
stu.name = "aaa"
console.log(stu)  // 此时会报错, 因为此时还未创立 stu 对象, 只是在栈内存占了一个地位, 在堆内存中没有创建对象

// 所以须要创立先一个 "空对象"
stu = {}
stu.name = "aaa"
console.log(stu)
  • 给一个全局变量赋值 null, 相当于将这个变量的指针对象以及值清空
var stu2 = {name: null}
    console.log(stu2)
  • 如果给对象的属性赋值为 null,或者局部变量赋值为 null,相当于给这个属性调配了一块空的内存,值为 null,JS 会回收全局变量为 null 的对象。
// 创立一个“空对象”var obj = {}
  • 下面的 ” 空对象 ” 为什么打了双引号?这只是一种简称而已。在 js 中基本不存在真正的空对象,了解这一点至关重要!即便时最简略的 {} 对象也会蕴含从 Object.prototype 继承而来的属性和办法。咱们提到的 ” 空对象 ” 只是说这个对象没有自有属性,不思考它是否有继承而来的属性

正文完
 0