JavaScript 构造函数 constructor

构造函数是用于创建和初始化对象的特殊函数。构造函数通常用来定义对象类型的原型方法,并且可以接受参数来初始化对象属性。

构造函数基础

定义构造函数

构造函数是一种特殊的函数,其主要用途是初始化新创建的对象。构造函数的名字通常以大写字母开头,以便区分普通函数。

在这个例子中,Person 是一个构造函数,它有两个参数:nameage。构造函数内部通过 this 关键字为新创建的对象赋值。

使用 new 关键字调用构造函数

使用 new 关键字调用构造函数时,JavaScript 会创建一个新的空对象,并将该对象绑定到构造函数中的 this 上。然后执行构造函数内的代码,最后返回这个新对象。

这里我们使用 new 关键字实例化了两个 Person 对象:person1person2。每个对象都有自己的 nameage 属性。

构造函数与原型

原型的作用

JavaScript 中的对象都继承自某个原型对象。构造函数的原型(prototype)对象用于定义所有通过该构造函数创建的对象共享的方法和属性。

在这个例子中,我们向 Person 的原型对象添加了一个 greet 方法。这样,所有通过 Person 构造函数创建的对象都可以访问这个方法。

使用原型链实现继承

JavaScript 中的继承可以通过原型链来实现。子类构造函数可以继承父类构造函数的原型,从而复用父类的方法。

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

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

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

在这个例子中,我们定义了一个 Student 类,它继承自 Person 类。Student 对象不仅拥有 nameage 属性,还额外有一个 grade 属性。同时,我们通过 Object.create() 方法设置了原型链,并添加了一个 study 方法。

ES6 类

类的基本概念

ES6 引入了 class 关键字,使得面向对象编程更加直观和简洁。虽然本质上还是基于原型的继承,但使用类语法可以让代码更易读。

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

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

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

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

在这个例子中,我们使用 class 关键字定义了两个类:PersonStudentStudent 类继承自 Person 类,并通过 super 关键字调用了父类的构造函数。

类的方法

在类中定义的方法默认都是可枚举的,并且不会被继承的原型所覆盖。类的方法可以使用箭头函数或普通函数定义,但在类方法中使用 this 需要注意作用域问题。

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

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

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

在这个例子中,我们定义了一个 Animal 类,它有一个 speak 方法。通过 new 关键字创建的 Animal 实例可以调用 speak 方法。

总结

构造函数是 JavaScript 中用于创建和初始化对象的重要工具。通过理解构造函数、原型以及 ES6 类的概念,你可以更好地掌握面向对象编程的技巧,从而写出更加高效和优雅的代码。

纠错
反馈