gpt4 book ai didi

javascript - 添加到另一个原型(prototype)实例的原型(prototype) : JavaScript

转载 作者:行者123 更新时间:2023-11-29 10:14:19 24 4
gpt4 key购买 nike

我的问题很简单:

如何设置继承自另一个类原型(prototype)的类的原型(prototype)?

我下面的代码一直有效,直到我尝试调用 Pierre.mySkill(),此时控制台显示该函数未定义。

从理论上讲,我这样做的原因是能够创建 Pirault 的实例以及 Person 的实例,并且能够添加到 Pirault 的原型(prototype)而无需添加到 Person 的原型(prototype)。

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

Person.prototype.info = function(){
console.log('I am '+this.name+' and I am '+this.age+' years old.');
};

function Pirault (){
this.skill = arguments[2];

Person.apply(this, arguments);
}

Pirault.prototype.mySkill = function(){
console.log('My skill is '+this.skill);
}

Pirault.prototype = Object.create(Person.prototype);
Pirault.prototype.constructor = Pirault;

var Pierre = new Pirault('Pierre', 30, 'Programming');

最佳答案

组织您的代码,以便在创建原型(prototype)对象后定义所有原型(prototype)方法。例如:

Pirault.prototype = Object.create(Person.prototype);
Pirault.prototype.constructor = Pirault;

Pirault.prototype.mySkill = function(){
console.log('My skill is '+this.skill);
}

Demo .就目前而言,您在原型(prototype)上正确定义了一个方法 - 但是当一个对象(由 Object.create 创建)变成一个新的 Pirault.prototype 时,它就丢失了。

关于javascript - 添加到另一个原型(prototype)实例的原型(prototype) : JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25818422/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com