在 ES6 中,我们已经看到了类 / class 的引入,让 JavaScript 拥有了更加完整的面向对象编程(OOP)功能。而在 ES8 中,类的实现方式更加多样化,本文将详细介绍 ES8 中类的多种实现方式,以及它们的学习和指导意义。
1. 基本类定义
ES8 中,我们仍然可以使用 ES6 中的类定义方式:
-- -------------------- ---- ------- ----- ------ - ----------------- ---- - --------- - ----- -------- - ---- - ------- - ---------------- -- ---- -- ------------ --- --- ----------- ----- ------- - - ----- ---- - --- -------------- ---- ------------- -- --- -- ---- -- ---- --- --- -- ----- ----展开代码
这种方式是最基本的类定义方式,没有任何变化,仍然是我们熟知的面向对象编程思想。
2. 静态属性
在 ES8 中,我们可以使用静态属性,即属性挂载在类本身上,而不是实例上。这种方式可以用于存储一些全局的数据。
-- -------------------- ---- ------- ----- ------ - ------ ------- - -------- ----------------- ---- - --------- - ----- -------- - ---- - ------- - ---------------- -- ---- -- ------------ --- --- ----------- ----- ------- - - ---------------------------- -- -----展开代码
在上面的例子中,species
属性被定义为 static
,可以直接通过类名访问。
3. 私有属性
在 ES8 中,我们可以使用 #
符号定义私有属性,即只能在类内部访问的属性。
-- -------------------- ---- ------- ----- ------ - ------ - ---------- ----------------- ---- - --------- - ----- -------- - ---- - ------- - ---------------- -- ---- -- ------------ --- --- ----------- ----- ---- -- ----- -- ------------------ - - ----- ---- - --- -------------- ---- ------------- -- --- -- ---- -- ---- --- --- -- ----- ---- -- ----- -- -------- ------------------------- -- -------- ------------ ------- ----- -------- ---- -- -------- -- -- --------- -----展开代码
在上面的例子中,#hobby
属性被定义为私有属性,只能在类内部访问,外部无法访问。
4. 私有方法
和私有属性一样,我们也可以使用 #
符号定义私有方法,即只能在类内部使用的方法。
-- -------------------- ---- ------- ----- ------ - ------ - ---------- ----------------- ---- - --------- - ----- -------- - ---- - ------- - ---------------- -- ---- -- ------------ --- --- ----------- ----- ---- -- ----- -- ----------------------- - ----------- - ------ ------------ - - ----- ---- - --- -------------- ---- ------------- -- --- -- ---- -- ---- --- --- -- ----- ---- -- ----- -- -------- ------------------------------ -- -------- ------------ ------- ----- ----------- ---- -- -------- -- -- --------- -----展开代码
在上面的例子中,#getHobby()
方法被定义为私有方法,只能在类内部使用,外部无法访问。
5. 访问器
在 ES8 中,我们可以使用访问器(getter 和 setter)来控制属性的读写操作。
-- -------------------- ---- ------- ----- ------ - ---- - -- ----------------- ---- - --------- - ----- --------- - ---- - --- ----- - ------ ---------- - --- ---------- - -- ------ - -- - ---------------- ------ -- ------------ - ---- - --------- - ------ - - ------- - ---------------- -- ---- -- ------------ --- --- ------------ ----- ------- - - ----- ---- - --- -------------- ---- ------------- -- --- -- ---- -- ---- --- --- -- ----- ---- -------- - ---- -- --- ------ -- --------- -------- - --- ------------- -- --- -- ---- -- ---- --- --- -- ----- ----展开代码
在上面的例子中,age
属性被定义为访问器属性,可以在读写时进行控制。
6. 总结
ES8 中类的多种实现方式,让 JavaScript 的面向对象编程更加灵活和完整。在实际开发中,我们可以根据需求选择相应的实现方式,来达到更好的编程效果。
以上是本文对 ES8 中类的多种实现方式的详细介绍,希望对读者有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/650d681495b1f8cacd71e899