ES6 提供了新的语法糖以实现更加面向对象的编程风格,其中最突出的特性是类的引入。在 JavaScript 中,我们一直利用 JavaScript 对象和原型链的特性来实现类似于面向对象的编程。ES6 类的引入让面向对象的编程更加的符合我们日常的开发需求。在这篇文章里,我们将会学习 ES6 类的相关内容,并提供实例代码以帮助你更好的理解。
类的基本语法
在 ES6 中,我们可以通过使用 class
关键字来定义一个类。一个类可以包含以下几个部分:
- 构造函数(constructor):类的构造函数用来初始化一个新的实例对象,可以设置一些属性,或调用一个初始化方法等等。
- 实例方法:实例方法用来为类的实例对象提供一些对其属性进行操作的方法。
- 静态方法:静态方法是属于类本身而不是类的实例对象,通常用来为整个类提供一些功能。
让我们来看一个简单的 ES6 类的定义:
----- ------ - ----------------- - --------- - ----- - ------- - ------------------------- ----- - --------- - ------ ------ - ----------------- -- -- ------ --------- - - ----- --- - --- -------------- ------------ -- ------- --- ----- - ------ -------------- -- ------- ---- -- -- ------ ------
在这个例子中,我们定义了一个名为 Animal
的类,包含了构造函数 constructor
、实例方法 speak
以及静态方法 info
。在构造函数中,我们设置了 name
属性为传递进来的参数值。在实例方法 speak
中,我们使用 console.log
显示出动物会发出一些声音。
对于静态方法 info
,它不属于类的一个实例而是属于类本身。可以通过类名直接访问并调用它,无需先实例化一个对象。
类的继承
在面向对象编程中,继承是一个非常重要的特性。它允许我们创建一个新的类,它继承了另一个类的属性和方法,使得我们能够复用和扩展代码。
在 ES6 中,我们可以通过 extends
关键字来实现类的继承。子类通过继承父类的属性和方法,从而具有与其不同的特征。
让我们来看一个继承 Animal 类的例子:
----- --- ------- ------ - ----------------- - ------------ - ------- - ------------------------- --------- - - ----- --- - --- -------------- ------------ -- ------- ------ ------ ----------- -- ------- ---- -- -- ------ ------
在这个例子中,我们创建了一个 Dog
类,并通过 extends
关键字将其继承至 Animal
。在子类 Dog
的构造函数中,我们调用了父类 Animal
的构造函数,并将 name
传递给它。在实例方法 speak
中,我们重新定义了父类的 speak
方法,由于子类的 speak
方法和父类的 speak
方法同名,会覆盖父类的 speak
方法。我们使用 console.log
显示出狗会发出一些声音。
与此同时,我们还可以调用从直接或间接父类继承而来的静态方法。
类的 getter 和 setter
ES6 类也支持使用 getter 和 setter 来访问和修改私有属性。这是通过使用 get
和 set
关键字来实现的。
----- -------- - ---------------------- --------- - --------------- - ---------- -------------- - --------- - --- ---------- - ------ ------------------- ------------------- - --- -------------- - ----- ----------- --------- - ------------ --- --------------- - ---------- -------------- - --------- - - ----- -------- - --- ---------------- ------- ------------------------------- -- ------- ---- --- ----------------- - ----- ------- ------------------------------- -- ------- ---- -----
在这个例子中,我们定义了一个 Employee
类,它有一个存储数据的私有属性 _firstName
和 _lastName
。我们定义了一个 fullName
的 getter 方法和一个 fullName
的 setter 方法。
在 fullName
的 getter 方法中,我们返回 _firstName
和 _lastName
属性组成的字符串。在 fullName
的 setter 方法中,我们解析传递的字符串,并将其赋值给 _firstName
和 _lastName
。
结论
ES6 类是实现面向对象编程的一个重要组成部分,并具有面向对象编程语言中的一些特性。类可以让我们更好的组织和重用代码。在本文中,我们介绍了 ES6 类的基本语法、继承机制、getter 和 setter。希望这篇文章能够帮助你更好的理解 ES6 类,并加深你的面向对象编程的知识。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/67389c81317fbffedf11aa95