【发布时间】:2014-09-12 23:40:54
【问题描述】:
我的问题很简单:
如何设置继承自另一个类原型的类的原型?
我的代码在我尝试调用 Pierre.mySkill() 之前一直有效,此时控制台显示该函数未定义。
理论上,我这样做的原因是能够创建 Pirault 的实例以及 Person 的实例,并且能够添加到 Pirault 的原型中而无需添加到 Person 的原型中。
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');
【问题讨论】:
-
所以
skill是"Pierre"? -
哎呀!感谢您发现它,我打算在发布之前对其进行更新。
-
这是您问题的简化版本:
var foo = {}; foo.name = 'foo'; foo = {}; console.log(foo.name);。为什么foo.name返回undefined应该很明显了。
标签: javascript prototype