返回
JavaScript 对象(二)- 继承与多态
见解分享
2023-10-06 10:23:22
导言
在 JavaScript 世界中,对象扮演着至关重要的角色。上篇文章中,我们深入探讨了 JavaScript 对象的创建,而这一篇,我们聚焦于一个更加高级的概念:对象继承与多态。
继承:拓展对象功能
继承是 JavaScript 中一种强大的机制,它允许新对象从现有对象(称为基类或父类)继承属性和方法。通过继承,我们无需重新编写代码即可拓展现有对象的功能。
在 JavaScript 中,继承是通过原型的机制实现的。每个 JavaScript 对象都有一个原型对象,它定义了该对象拥有的属性和方法。当一个新对象被创建时,它会继承其原型对象的属性和方法。
多态:动态方法调用
多态是指同一个方法可以对不同类型的对象执行不同的操作。在 JavaScript 中,多态通过函数重写实现。
当一个派生类(继承自基类)重写基类中的一个方法时,当该方法被调用时,将执行派生类中的重写版本,而不是基类中的原始版本。
用原型实现继承
在 JavaScript 中,使用 Object.create()
方法可以创建一个新对象,该对象从指定原型对象继承属性和方法。例如:
const Person = {
name: 'John Doe',
age: 30
};
const Employee = Object.create(Person);
Employee.jobTitle = 'Software Engineer';
在上面示例中,Employee
对象继承了 Person
对象的 name
和 age
属性。
多态示例
考虑一个 Animal
基类,它定义了一个 speak()
方法。
class Animal {
speak() {
console.log('Generic animal sound');
}
}
现在,创建 Dog
和 Cat
派生类,它们重写 speak()
方法。
class Dog extends Animal {
speak() {
console.log('Woof!');
}
}
class Cat extends Animal {
speak() {
console.log('Meow!');
}
}
现在,我们可以创建 Dog
和 Cat
对象,并调用 speak()
方法来演示多态。
const dog = new Dog();
dog.speak(); // 输出 "Woof!"
const cat = new Cat();
cat.speak(); // 输出 "Meow!"
结论
继承和多态是 JavaScript 中强大的概念,它们使我们能够创建复杂且可重用的对象。通过理解这些机制,你可以编写更灵活、更高效的代码。