在前端开发中使用面向对象编程的思路是非常常见的,使用类对象和继承可以帮助我们更好地组织代码,提高代码的复用性和可维护性。ES6 之后,我们可以使用 class
来定义类和继承,ES8 中又新增了一些特性,本文将介绍在 ES8 中如何使用类对象和继承。
定义类
使用 class
关键字定义类非常简单,例如定义一个矩形类:
-- -------------------- ---- ------- ----- ---- - ------------------ ------- - ---------- - ------ ----------- - ------- - --- ------ - ------ ---------- - ------------ - --- ------------ - -- ------ -- -- - ----- --- -------------- -------- - ----------- - ------ - --- ------- - ------ ------------ - --- ------------- - -- ------ -- -- - ----- --- -------------- -------- - ------------ - ------ - --- -------- - ------ ------------- - -
使用 class
定义一个类,需要关键字 class
后面跟上类名,后面的花括号中定义类的属性和方法。constructor
方法是类的构造函数,用于初始化类的实例。类中的方法和属性都直接定义在类中即可。上面的定义中,我们定义了一个矩形类,有 width
和 height
属性和 area
方法,width
和 height
属性是可读写的,并且保证了属性值必须大于 0。
继承
继承可以让子类继承父类的属性和方法,子类可以通过继承来实现代码复用。在 ES8 中,定义一个继承自父类的子类也非常简单,例如定义一个正方形类,继承自矩形类:
class Square extends Rect { constructor(length) { super(length, length); } }
使用 extends
关键字来继承一个类,子类必须在构造函数中调用 super
方法,以便在父类的基础上初始化子类。在上面的定义中,我们定义了一个正方形类,继承自矩形类,并且只需要传递正方形边长作为参数即可。
类属性和方法
类属性和方法是指定义在类上的属性和方法,而不是定义在实例上的。类属性和方法可以通过类名直接访问,而不需要先创建实例。在 ES8 中,我们可以使用静态属性和方法来定义类属性和方法。
静态属性
静态属性是指定义在类上的属性,可以通过类名访问。在 ES8 中,我们可以使用 static
关键字来定义静态属性:
class Rect { static fromString(str) { const [w, h] = str.split('x'); return new Rect(parseInt(w), parseInt(h)); } }
在上面的定义中,我们定义了一个静态方法 fromString
,用于从字符串中解析宽度和高度,并创建一个矩形对象实例。在实际使用中,我们可以通过类名直接访问这个静态方法:
const rect = Rect.fromString('10x20');
静态方法
静态方法是指定义在类上的方法,可以通过类名访问。在 ES8 中,我们可以使用 static
关键字来定义静态方法:
class Rect { static area(width, height) { return width * height; } }
在上面的定义中,我们定义了一个静态方法 area
,用于计算矩形的面积。在实际使用中,我们可以通过类名直接访问这个静态方法:
const area = Rect.area(10, 20);
总结
在 ES8 中,使用 class
来实现类对象和继承非常方便,可以大大提高代码的复用性和可维护性。本文介绍了如何在 ES8 中定义类、继承父类、定义静态属性和方法,希望可以帮助读者更好地理解和使用类对象和继承。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64c7216d10032fedd39093d5