📌  相关文章
📜  javascript 基于另一个对象创建对象 - Javascript (1)

📅  最后修改于: 2023-12-03 15:31:41.934000             🧑  作者: Mango

Javascript 基于另一个对象创建对象

在 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 类的继承

在 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 类的继承来基于另一个对象来创建新的对象。这种方式可以用于实现代码的复用和模块化。