我正在学习继承。在下面的代码中
1)企鹅继承自动物
2)当我打电话给penguin.sayName();为什么输出“嗨我的名字未定义”;
function Animal(name,numLegs){
this.name = name;
this.numLegs = numLegs;
}
Animal.prototype.sayName = function(){
console.log("Hi my name is " + this.name);
};
function Penguin(){}
Penguin.prototype = new Animal();
var penguin = new Penguin("Captain Cook", 2);
penguin.sayName();
答案 0 :(得分:2)
您需要通过函数构造函数将name
和numLegs
属性添加到penguin对象。这两个属性特定于Animal
对象,不会通过调用Penguin构造函数来分配。
function Penguin(name,numLegs){
this.name = name;
this.numLegs = numLegs.
}
工作示例: http://jsfiddle.net/5A7hH/
您还可以在原型链上使用构造函数,这与Java中的super()构造函数的调用类似。
function Penguin(name,numLegs){
this.constructor(name,numLegs);
}