理解 JavaScript: new 关键字

在 JavaScript 中,new 关键字是用于创建对象的一种方式。它可以使用构造函数来创建一个新的实例对象,并且还可以向构造函数传递参数。但是 new 关键字可能有一些难以理解的行为和细节,本文将详细介绍 new 关键字的工作原理,并提供示例代码和指导意义。

使用 new 创建对象

要使用 new 关键字创建一个对象,我们需要一个构造函数。构造函数是一个普通的函数,但是当使用 new 关键字调用它时,它将返回一个新的对象。

以下是一个简单的构造函数示例:

-------- ------------ ---- -
  --------- - -----
  -------- - ----
-

这个构造函数接受两个参数:nameage。当使用 new 关键字调用它时,它将返回一个新的对象,该对象具有 nameage 属性。

----- ------- - --- --------------- ----
--------------------- -- ------ -------- ---- ---

----- ------- - --- ------------- ----
--------------------- -- ------ ------ ---- ---

在上面的示例中,我们通过 new 关键字创建了两个不同的 Person 对象。每个对象都有自己独立的属性值,即使它们使用相同的构造函数来创建。

new 的背后工作原理

当我们使用 new 关键字调用构造函数时,JavaScript 发生了以下步骤:

  1. 创建一个新对象。
  2. 将该对象的原型设置为构造函数的 prototype 属性。
  3. 将构造函数的 this 关键字设置为新对象。
  4. 执行构造函数内部的代码。
  5. 返回新对象(除非构造函数显式返回一个对象)。

这些步骤确保每个使用 new 关键字创建的对象都具有与构造函数的 prototype 属性相关联的方法和属性。

在上面的示例中,我们可以看到 Person 函数是如何创建新对象并设置其属性的。此外,由于每个 Person 对象都具有与 Person.prototype 相关联的方法和属性,因此我们可以将这些方法添加到 Person.prototype 中,并且每个 Person 对象都可以访问它们。

------------------------- - ---------- -
  ------------------- -- ---- -- ---------------
--

------------------- -- ------ -- ---- -- -----
------------------- -- ------ -- ---- -- ---

注意事项

在使用 new 关键字时,请注意以下几点:

  • 如果构造函数显式返回一个对象,则返回该对象而不是新创建的对象。
  • 如果没有使用 new 关键字调用构造函数,则 this 关键字将指向全局对象(在浏览器中为 window 对象)而不是新创建的对象。

以下是一个示例,说明了 new 关键字和返回值的行为:

-------- ------------ ---- -
  --------- - -----
  -------- - ----

  -- --------
  ------ - ------ --------- --
-

----- ------ - --- --------------- ----
-------------------- -- ------- ----------

指导意义

  • 理解 new 关键字如何创建对象并将其与构造函数的原型相关联非常重要。
  • 在编写自己的构造函数时,请确保使用 new 关键字调用它们,并始终明确地返回一个新对象。
  • 当您看到使用 new 关键字创建对象时,请记住其工作原理并掌握其注意事项。

最后,我们

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/31868