javascript - 如何在 JavaScript 中克隆构造函数?

标签 javascript

我有一个构造函数Monkey():

function Monkey(name, age) {
    this.name = name;
    this.age = age;
}

我想创建另一个名为 Human() 的构造函数,它带有一个额外的属性 cars,它将存储该人拥有的汽车数量以及 的所有属性猴子(如nameage)

我不想在新的Human 内容中重复所有Monkey 内容。是否可以克隆 Monkey 并使用 prototype 扩展属性?

最佳答案

我试过这段代码,我想这就是你想要的:

function Human(name,age,cars){
    Monkey.call(this,name,age);
    this.cars = cars;
}

这样,Human构造函数调用 Monkey构造函数作为普通函数,但将其命名空间设置为新的 Human目的。因此,在这种情况下,this里面的关键词Monkey构造函数引用类 Human 的对象,而不是 Monkey.此外,使用此代码,条件 new Human() instanceof Human;返回 true ,因为我没有返回 Monkey 的新实例, 只需使用它的构造函数。

另外,正如您所说,您可以“克隆”原型(prototype)。只需这样做:

Human.prototype = Monkey.prototype;

编辑

正如@Bergi amd 所建议的,克隆原型(prototype)的最佳方法是使用 Object.create method ,如下:

Human.prototype = Object.create(Monkey.prototype, {constructor:{value:Human}});

关于javascript - 如何在 JavaScript 中克隆构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14312951/

相关文章:

javascript - 执行 && 和 ||运算符将其操作数转换为 bool 值?

javascript - 组件自动完成 VueJS

javascript - 数据验证和安全 : From user input to browser output – PHP/MySQL/JavaScript

javascript - 如何在 material-ui 组件上设置 HTML 元素 ID?

php - 获取输入路径以提交到 php 中的保管箱

javascript - 如何访问 onchange Javascript 中的多个文本框

javascript - Javascript 中的输入法库

javascript - 带有 react-redux 的 LocalStorage

javascript - 使用 () 强制 JavaScript 解释器首先进行计算

循环内的 JavaScript 闭包 – 简单的实际示例