在 JavaScript 中,类的使用是非常重要的,使我们能够组织和抽象代码,让代码更具可读性和可维护性。 幸运的是,ECMAScript 2019 引入了一些新的语言功能,将类和类继承的语法更好地融入到 JavaScript 中。
本文将深入介绍 ECMAScript 2019 中的类和静态属性,并提供一些示例代码来帮助你更好地理解如何使用这些功能。
类的基础知识
在讨论 ECMAScript 2019 中的类和静态属性之前,我们需要先了解一些关于类的基础知识。
在 JavaScript 中,类可以使用关键字 class 来定义,例如:
-- -------------------- ---- ------- ----- ------ - ----------------- - --------- - ----- - --------- - ----------------------- - -
在这个例子中,我们创建了一个名为 Person 的类,它有一个名称为 constructor 的特殊方法和一个名为 sayName 的方法。
constructor 方法是类的构造函数,它在用 new 关键字创建类实例时被调用。在上面的示例中,我们将构造函数中传入的函数名称存储到名为 name 的实例属性中。
sayName 方法只是一个简单的实例方法,当它被调用时,它将输出存储在 name 属性中的名称。使用类创建的实例可以像这样:
const person = new Person("John Doe"); person.sayName(); // 输出 "John Doe"
类的继承
类的继承是一种允许我们创建一个新类,该类使用现有类的所有属性和方法的技术。我们可以使用 extends 关键字来创建一个子类,例如:
-- -------------------- ---- ------- ----- ------- ------- ------ - ----------------- ------ - ------------ ---------- - ------ - ---------- - ------------------------ - -
在这个例子中,我们定义了一个名为 Student 的类,并通过 extends 关键字将其继承自 Person 类。我们还添加了一个额外的属性 grade 和一个新方法 sayGrade。
在 Student 类的 constructor 函数中,我们需要调用父类的 constructor 方法,我们使用 super 关键字来调用它。注意传递给 super() 的参数是父类 constructor 中需要的参数。
现在我们可以使用 Student 类创建新的实例了,我们不仅可以使用 Student 类中定义的方法,还可以使用来自 Person 类的方法:
const student = new Student("Jane Doe", "A"); student.sayName(); // 输出 "Jane Doe" student.sayGrade(); // 输出 "A"
静态属性
ECMAScript 2019 还引入了一种称为静态属性的新类成员。静态属性是指可以直接在类上访问的属性,而无需使用实例。可以使用 static 关键字来定义静态属性,例如:
class Rectangle { static defaultDimensions = { width: 10, height: 20 }; }
在这个例子中,我们创建了一个名为 defaultDimensions 的静态属性,并将其设置为指定的对象。
可以通过访问类本身来访问静态属性,而不是任何特定的实例:
console.log(Rectangle.defaultDimensions); // 输出 { width: 10, height: 20 }
注意,如果尝试使用特定的实例来访问静态属性,将会得到 undefined:
const rectangle = new Rectangle(); console.log(rectangle.defaultDimensions); // 输出 undefined
总结
在 ECMAScript 2019 中,我们看到了如何使用类创建 JavaScript 中的面向对象编程结构。我们还看到了如何使用继承来扩展现有类,并介绍了新引入的静态属性。
这些新功能可以帮助我们更好地组织和抽象代码,并使我们的代码更可维护和可重用。我们鼓励你在你的下一个 JavaScript 项目中尝试使用它们。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/651fd36395b1f8cacd75df0f