首页 >web前端 >js教程 >JavaScript 中的'new”关键字如何创建和管理对象?

JavaScript 中的'new”关键字如何创建和管理对象?

Patricia Arquette
Patricia Arquette原创
2024-12-26 15:26:11366浏览

How Does the `new` Keyword Work in JavaScript to Create and Manage Objects?

破译 JavaScript 中的“new”关键字:揭示其功能和用例

虽然 JavaScript 通常被认为是非面向对象的,“new”关键字在创建和操作对象中起着至关重要的作用。让我们深入研究它的重要性并解决有关其用法的基本问题。

什么是“new”关键字?

“new”关键字在以下方面有多种用途: JavaScript:

  1. 它实例化一个新对象。
  2. 它将构造函数的“prototype”对象指定为新创建对象的内部且不可访问的 [[prototype]] 属性。
  3. 它将新创建的对象分配给“this”变量。
  4. 每当使用“this”时,它都会调用构造函数,利用新创建的对象。
  5. 除非构造函数返回非空对象引用,它返回新创建的对象。

使用“new”解决问题

“new”关键字解决了 JavaScript 基于类的继承中的限制系统。通过动态属性和继承,它允许程序员模拟传统的 OOP 机制。

何时使用 'new' 和何时不

每当你需要使用 'new' 关键字时需要:

  • 创建类的实例构造。
  • 使用特定属性和方法初始化一个新对象。
  • 通过内部 [[prototype]] 属性访问构造函数的“原型”对象。

在以下情况下避免使用“new”:

  • 您想要将函数作为普通函数调用函数。
  • 您希望从构造函数返回一个替代对象。
  • 您不知道设置内部 [[prototype]] 属性和修改继承属性的含义。

理解原型和[[原型]]属性

原型链是 JavaScript 继承的基础。函数的“原型”属性是指可访问的对象,可以对其进行操作以建立继承的属性和方法。相反, [[prototype]] 属性是一个内部的、不可变的对象,它保存构造函数的原型。

示例:

function ObjMaker() {
  this.a = 'first';
}

ObjMaker.prototype.b = 'second';

const obj1 = new ObjMaker();

console.log(obj1.a); // "first"
console.log(obj1.b); // "second"

在此示例中, 'new' 创建一个新的 'obj1' 对象,将其 [[prototype]] 属性设置为 'ObjMaker.prototype',并执行“ObjMaker”函数,将“obj1.a”初始化为“first”。 “prototype”链允许“obj1”从其 [[prototype]] 对象继承“b”属性。

子类和原型链

要建立类似子类的结构,可以将子类构造函数的“prototype”属性设置为超类的“prototype”对象。这创建了一个原型链,使子类能够继承和覆盖其超类的属性。

以上是JavaScript 中的'new”关键字如何创建和管理对象?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn