📅  最后修改于: 2023-12-03 15:31:41.934000             🧑  作者: Mango
在 JavaScript 中,可以通过基于一个已有对象来创建新的对象。这种创建对象的方式被称为原型继承。
原型继承的实现,只需要使用一个被称为原型的对象作为基础,然后通过 JavaScript 的 Object.create() 方法来创建新的对象。新对象可以访问原型对象中的所有属性和方法。
// 原型对象
const animal = {
name: 'Unknown',
speak() {
console.log(`${this.name} makes a noise.`);
}
};
// 创建新对象
const dog = Object.create(animal);
dog.name = 'Dolly';
dog.speak(); // Output: "Dolly makes a noise."
const cat = Object.create(animal);
cat.name = 'Kitty';
cat.speak(); // Output: "Kitty makes a noise."
在上面的代码片段中,我们定义了一个原型对象,名为 animal,然后通过 Object.create() 方法基于这个对象创建了两个新的对象 dog 和 cat。
dog 和 cat 分别继承了 animal 对象的属性和方法,同时也可以指定自己的属性值,比如在这个例子中,我们通过为 dog 和 cat 对象的 name 属性赋值来分别设置它们的名字。
最后,我们用 speak() 方法输出它们的名称。
在 ES6 中,我们可以使用 class 和 extends 来实现基于另一个对象的继承。
// 定义一个动物类
class Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(`${this.name} makes a noise.`);
}
}
// 定义一个狗类,继承自动物类
class Dog extends Animal {
constructor(name) {
super(name);
}
speak() {
console.log(`${this.name} barks.`);
}
}
const dolly = new Dog('Dolly');
dolly.speak(); // Output: "Dolly barks."
在上面的代码片段中,我们首先使用了 ES6 的 class 关键词定义一个 Animal 类,它包含一个构造函数和一个 speak() 方法。
然后,我们使用 extends 关键词定义了一个 Dog 类,它继承自 Animal 类。在 Dog 类的构造函数中,我们使用 super() 关键词调用了 Animal 类的构造函数,传递了参数 name。
最后,我们实例化了一个 Dog 对象,向构造函数传递了参数 Dolly,并调用了它的 speak() 方法。
在 JavaScript 中,我们可以使用原型继承或 ES6 类的继承来基于另一个对象来创建新的对象。这种方式可以用于实现代码的复用和模块化。