new 实例化对象是啥意思_四. 对象实例化原理分析(上)

1 引用数据类型

对象是一种特殊的数据, 看如下代码

示例
 // 一. 定义一个学生类
 function Student(n, a) {
     this.uname = n;
     this.age = a;
 }
 // 二. 实例化对象
 var stu = new Student('xiaoming', 20);
  • 这里并不是把所有的数据直接保存在变量中
  • 而是先在堆区开辟一个空间, 把这个空间的引用保存在变量中.
  • 在js中, 函数和对象都是引用数据类型

d3d4111c112a1da1ff0abe415d7a3795.png

这里有个词--"引用"

什么是引用呢, 引用有什么用呢?

一句话解释: 引用就是来找数据的

类似于路径的概念, 就像我们可以通过路径E:docmentimageimg.jpg找到电脑中的一个文件,

又或者酒店的房间号, 通过房间号就可以找到房间

通过引用就可以找到内存中的数据.

引用本质上是内存首地址. 通过这个地址就可以找到对应的内存空间, 进而获取数据

574e79ef2dafd5787e1e9d09246a1e2c.png
https://www.zhihu.com/video/1153304026035630080

2 new实例化的过程

示例
 // 一. 定义一个学生类
 function Student(n, a) {
     this.uname = n;
     this.age = a;
 }
 // 二. 实例化对象
 var stu = new Student('xiaoming', 20);

852b90f978d3fb8a18f005ed367964f6.gif

当代码执行到行7行时.

  1. 在堆内存中开辟一段内存空间, 假设这段内存空间是从0x1111~0x20003
    因此通过0x1111就可以找到对应的这段内存空间, 进而获取其中的数据
  2. 0x1111保存在this中, 我们也可以说让this指向这个空间
  3. 执行函数. 通过this=0x1111找到内存空间, 在这个空间中保存数据name:xiaoming,age:20
  4. 最后, 将0x1111返回, 保存在stu中
b3576bb8f59f3eb6002636150b97c4bb.png
https://www.zhihu.com/video/1153304158340743168
练习

如果再实例化一个对象stu1, (假设内存地址是0x2222), 画出实例化的过程

 // 一. 定义一个学生类
 function Student(n, a) {
     this.uname = n;
     this.age = a;
 }
 // 二. 实例化对象
 var stu = new Student('xiaoming', 20);
 var stu1 = new Student('xiaomei', 18);
参考答案

25322f60ef790c4bf301e45c62d923b5.png

这样, 我们就可以通过一个模板(Student构造函数)得到多个不同的对象(stu对象和stu1对象). 对象中保存的数据也不一样.

edcf8c26b9d656bdea736ffa24475458.png
https://www.zhihu.com/video/1153304226963873792
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值