ES6 中引入了 Class 这个新的语法特性,使得 JavaScript 的面向对象编程更加直观和易用。在 Class 中,继承和构造函数是两个非常重要的概念,本文将详细介绍它们的使用方法和注意事项。
继承
继承是面向对象编程中的一个基本概念,它允许子类继承父类的属性和方法,并且可以在此基础上添加新的属性和方法。在 ES6 中,我们可以通过 extends
关键字来实现类的继承。
-- -------------------- ---- ------- ----- ------ - ----------------- - --------- - ----- - ------- - ------------------------- ----- - --------- - - ----- --- ------- ------ - ------- - ------------------------- --------- - - --- - - --- -------------- ---------- -- ------ ------
在上面的例子中,我们定义了一个 Animal
类和一个 Dog
类,Dog
类继承自 Animal
类。Dog
类重写了 speak
方法,使得 Dog
实例调用 speak
方法时输出 barks
而不是 makes a noise
。我们通过 new
关键字创建了一个 Dog
类的实例 d
,并调用了它的 speak
方法。
需要注意的是,子类在构造函数中必须调用 super
函数,以便在创建子类实例时先创建父类实例。如果没有调用 super
函数,子类将无法访问父类的属性和方法。
-- -------------------- ---- ------- ----- ------ - ----------------- - --------- - ----- - - ----- --- ------- ------ - ----------------- ------ - -- ---- ----- -- ------------ ---------- - ------ - ------- - ------------------------- --------- - - --- - - --- ------------- ---------- -------------------- -- ------ --------------------- -- ------
在上面的例子中,我们定义了一个 Dog
类,它有两个参数 name
和 breed
。在 Dog
类的构造函数中,我们调用了 super
函数来调用父类的构造函数,并将 name
参数传递给它。然后,我们将 breed
参数赋值给 Dog
类的实例属性 breed
。最后,我们创建了一个 Dog
类的实例 d
,并访问了它的 name
和 breed
属性。
构造函数
在 ES6 中,我们可以通过 constructor
方法来定义类的构造函数。构造函数在类实例化时自动调用,并且可以在其中初始化类的属性和方法。
-- -------------------- ---- ------- ----- ------ - ----------------- - --------- - ----- - ------- - ------------------------- ----- - --------- - - --- - - --- --------------- ---------- -- ---- ----- - ------
在上面的例子中,我们定义了一个 Animal
类,并在其中定义了一个构造函数。构造函数接受一个 name
参数,并将其赋值给 Animal
类的实例属性 name
。然后,我们创建了一个 Animal
类的实例 a
,并调用了它的 speak
方法。
需要注意的是,在类的构造函数中,我们不应该使用 function
关键字来定义方法,而应该直接使用方法名和函数体。否则,会出现语法错误。
-- -------------------- ---- ------- ----- ------ - ----------------- - --------- - ----- - -- ----- ------ ---------- - ------------------------- ----- - --------- - -- ----- ------- - ------------------------- ----- - --------- - -
在上面的例子中,我们定义了一个 Animal
类,并在其中定义了一个 speak
方法。在错误的写法中,我们使用了 function
关键字来定义 speak
方法,导致语法错误。在正确的写法中,我们直接使用了方法名和函数体来定义 speak
方法。
总结
在本文中,我们详细介绍了 ES6 中 Class 的继承和构造函数的使用方法和注意事项。通过学习本文,我们可以更加深入地理解面向对象编程的基本概念,并且能够更加灵活地使用 JavaScript 进行编程。
完整示例代码如下:
-- -------------------- ---- ------- ----- ------ - ----------------- - --------- - ----- - ------- - ------------------------- ----- - --------- - - ----- --- ------- ------ - ----------------- ------ - ------------ ---------- - ------ - ------- - ------------------------- --------- - - --- - - --- --------------- ---------- -- ---- ----- - ------ --- - - --- ------------- ---------- -------------------- -- ------ --------------------- -- ------ ---------- -- ------ ------
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/655abd33d2f5e1655d4f1c77