【JavaScript】对象 ④ ( 构造函数与对象的联系 | new 操作符执行过程分析 )

2024-04-28 08:02:39 浏览数 (1)

一、构造函数与对象的联系

在 JavaScript 中 , 构造函数 与 对象 之间 是 描述 与 实例 之间的关系 ;

  • 构造函数 是 用来创建特定类型对象的函数 ;
  • 对象 是 根据 构造函数 实例化出来的具体实例 ;

构造函数 抽象了 对象的公共部分 , 将 属性 和 方法 封装到了 构造函数中 , 可以理解为 面向对象 中的 类 ;

对象 指的是 某一个特定的实例化值 ;

二、new 操作符执行过程分析

1、使用 new 构造函数() 创建对象过程

在上一篇博客 【JavaScript】对象 ③ ( 使用 new Object 创建对象 | 使用 构造函数 创建对象 | 构造函数语法 | 使用 字面量 和 new Object 创建对象的方法弊端 ) 中 , 讲解了 构造函数的使用流程 ,

首先 , 定义构造函数 ;

代码语言:javascript复制
// 1. 定义构造函数  
function Person(uname, age) {  
    // 2. 在构造函数内部定义属性和方法  
    this.uname = uname;  
    this.age = age;  
      
    this.hello = function() {  
        console.log( this.uname   " is "   this.age   " years old");
    };  
}  

然后 , 使用 new 操作符 调用构造函数 , 创建对象 ;

代码语言:javascript复制
// 3. 使用 new 操作符调用构造函数,创建对象
var person = new Person('Tom', 18);

2、new 操作符执行过程

new 操作符 的 主要作用就是 创建一个新的对象实例 , 这个 对象实例 会继承构造函数的 prototype 对象 , 并 执行 构造函数 中的代码 , 来初始化新对象的属性和方法 , 下面详细分析 new 操作符 的执行过程 ;

new 操作符 创建对象 的执行过程 如下 :

  • 首先 , 创建空对象 , 使用 new 操作符 调用 构造函数 , 可以 在 内存空间 中 , 创建一个 空对象 ;
  • 然后 , this 指针指向对象 , 将 构造函数 中的 this 指针指向该 空对象 ;
    • 新创建的 空对象 的 __proto__ 会被链接到 构造函数 的 prototype 对象 , 该 空对象 就可以 访问 在 构造函数 中 定义的 属性和方法 ;
  • 再后 , 设置属性和方法 , 执行 构造函数 中的代码 , 为 空对象 设置 属性 和 方法 ;
    • this 关键字 在 构造函数 内部被设置为新创建的对象 , 之后 执行构造函数的代码 , 给新对象添加属性和方法 ;
  • 最后 , 返回创建的对象 , 将 内存空间 中 创建的对象返回 , 一般是赋值给 var / let 关键字声明的变量 ;
    • new 关键字 可以 将 创建的对象直接返回 , 因此 构造函数 中 不需要 return 语句 ;
      • 如果构造函数 没有 显式地 返回一个对象 , new 操作符 会自动返回新创建的对象 ;
      • 如果构造函数 确实 显式地 返回了一个 返回值 , 那么这个返回值会被 new 操作符 返回 ;

0 人点赞