JavaScript 使用 new 创建类实例

在 JavaScript 中,使用 new 关键字可以创建一个用户自定义对象类型的实例。这个过程包括以下步骤:

  1. 创建一个新的空对象。
  2. 将构造函数的作用域赋给新对象(因此 this 就指向了这个新对象)。
  3. 执行构造函数中的代码(给这个新对象添加属性)。
  4. 返回新对象。

构造函数

构造函数是一种特殊的函数,主要用来初始化对象。构造函数的命名通常首字母大写,以便与普通函数区分开来。

构造函数的注意事项

  • 构造函数内部没有 return 语句时,默认返回的是 this 指向的对象。
  • 如果构造函数有 return,并且返回值是一个原始类型,那么这个返回值会被忽略;如果返回值是一个引用类型,那么这个返回值会被作为构造函数的返回值。
-- -------------------- ---- -------
-------- ------------- -
    ---------- - ----
    ------ --- -- ------
-

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

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

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

类的定义

ES6 引入了 class 关键字,使得定义类变得更加直观和简单。尽管类本质上是基于原型的继承,但它们提供了一种更接近于面向对象编程的语言风格。

定义类

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

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

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

类的方法

类的方法默认都是可枚举的,并且默认不是可配置的、不可写的。如果需要修改这些行为,可以通过 Object.defineProperty 方法进行设置。

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

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

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

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

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

静态方法

静态方法是属于类本身而不是类的实例的方法。它们不能通过实例调用,只能通过类名调用。

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

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

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

继承

类可以通过 extends 关键字实现继承,从而复用父类的功能。

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

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

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

覆盖方法

子类可以覆盖父类的方法。

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

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

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

super 关键字

super 关键字用于调用父类的方法。在子类构造函数中,必须先调用 super(),然后才能使用 this 关键字。

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

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

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

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

总结

本章介绍了如何使用 new 关键字创建类实例,以及如何定义和使用类、继承和静态方法等。理解这些概念对于掌握现代 JavaScript 编程至关重要。在接下来的内容中,我们将继续深入探讨其他相关主题。

纠错
反馈