前端:new关键字的作用

本文涉及的产品
无影云电脑企业版,4核8GB 120小时 1个月
无影云电脑个人版,1个月黄金款+200核时
资源编排,不限时长
简介: 在JavaScript中,`new`关键字用于创建构造函数或类的新实例。使用`new`时,会自动创建一个空对象,并将其绑定到函数内的`this`,执行构造函数中的代码后返回该对象。这使得对象可以继承构造函数的属性和方法。
  1. 创建对象实例

    • 基本概念:在JavaScript前端开发中,new关键字主要用于创建一个构造函数的实例。构造函数是一种特殊的函数,用于初始化新创建的对象。例如,定义一个简单的构造函数来创建一个Person对象:
      function Person(name, age) {
             
      this.name = name;
      this.age = age;
      }
      
    • 使用方式:当使用new Person('Alice', 25)时,就会创建一个Person类型的新对象。这个新对象包含了nameage两个属性,其值分别为'Alice'25。在内存中,会开辟一块新的空间来存储这个对象,并且这个对象是独立于其他对象存在的,每个通过new关键字创建的Person对象都有自己的一套nameage属性。
  2. 建立对象的原型链

    • 原型链关联new关键字在创建对象的同时,会将新对象的原型(__proto__)指向构造函数的原型对象(prototype)。例如,继续在Person构造函数的原型对象上添加一个方法:
      Person.prototype.sayHello = function () {
             
      console.log(`Hello, my name is ${
               this.name}`);
      };
      
    • 继承机制:当通过new Person('Alice', 25)创建一个对象后,这个新对象可以访问sayHello方法。这是因为new操作使得新对象的原型链与构造函数的原型对象建立了关联。在查找对象的属性和方法时,如果对象本身没有该属性或方法,JavaScript会沿着原型链向上查找,直到找到对应的属性或方法或者到达原型链的顶端(Object.prototype)。所以,新创建的Person对象可以通过原型链继承Person.prototype上的方法,这是实现JavaScript对象继承的一种重要方式。
  3. 自动执行构造函数并绑定this

    • 构造函数执行new关键字会自动调用构造函数,并且在构造函数内部,this关键字会自动绑定到新创建的对象上。例如,在Person构造函数中,this.name = namethis.age = age这两行代码,this指代的就是通过new关键字新创建的那个对象。这样就可以方便地在构造函数中初始化对象的属性,将传入的参数赋值给对象的相应属性。
    • 返回值规则:一般情况下,构造函数如果没有显式地返回一个对象,new操作会返回新创建的对象。但如果构造函数返回了一个对象,则new操作会返回这个返回的对象。例如:
      function AnotherPerson(name, age) {
             
      this.name = name;
      this.age = age;
      return {
             
         otherName: 'Other Name'
      };
      }
      let anotherPerson = new AnotherPerson('Bob', 30);
      // anotherPerson是{ otherName: 'Other Name' },而不是包含name和age属性的对象
      
      这种返回值规则在某些特殊情况下可以用于改变new操作的默认行为,不过在大多数常规的构造函数中,通常不会返回一个新的对象,而是通过this来初始化并返回新创建的对象。
相关文章
|
1月前
|
算法 编译器 C语言
宏函数以及作用
宏函数是在预处理阶段由编译器进行替换的代码片段,常用于常量定义、简单计算和代码简化。它们以 `#define` 开头,不进行类型检查,使用时需谨慎。
|
2月前
|
开发框架 Cloud Native .NET
10 个 C# 关键字和功能
10 个 C# 关键字和功能
54 8
|
7月前
|
JavaScript 前端开发
js中new关键字的作用,new一个对象的过程中发生了什么
js中new关键字的作用,new一个对象的过程中发生了什么
|
SQL
基础关键字
基础关键字
87 0
|
前端开发
前端学习案例3-this指向问题-隐式调用规则
前端学习案例3-this指向问题-隐式调用规则
76 0
前端学习案例3-this指向问题-隐式调用规则
|
前端开发
前端学习案例4-this指向问题-隐式调用规则2
前端学习案例4-this指向问题-隐式调用规则2
75 0
前端学习案例4-this指向问题-隐式调用规则2
|
JavaScript 前端开发
|
JavaScript 前端开发
|
JavaScript 前端开发
|
JavaScript 前端开发