1

我正在学习继承。在下面的代码中

1)企鹅继承自Animal

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();
4

1 回答 1

2

您需要通过函数构造函数将namenumLegs属性添加到企鹅对象。这两个属性是特定于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);
}
于 2013-04-04T09:02:53.190 回答