Мой вопрос просто:Добавление к прототипу экземпляра другого прототипа: JavaScript
Как создать прототип класса, который наследует от прототипа другого класса?
Мой код ниже работает, пока я не попытаюсь позвонить Pierre.mySkill(), после чего консоль говорит, что функция не определена.
Моей причиной для этого, теоретически, является возможность создавать экземпляры Pirault, а также экземпляры Person и быть в состоянии добавить к прототипу Pirault без необходимости добавлять к Person's.
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');
Так что «умение» - это «Пьер»? – elclanrs
woops! Спасибо, что поймал это, я хотел обновить его до того, как я разместил сообщение. – papiro
Вот упрощенная версия вашей проблемы: 'var foo = {}; foo.name = 'foo'; foo = {}; console.log (foo.name); '. Это должно быть довольно очевидно, почему 'foo.name' возвращает' undefined'. –