对象原型和继承

Object prototypes and Inheritance

// the original Animal class and sayName method
function Animal(name, numLegs) {
    this.name = name;
    this.numLegs = numLegs;
}
Animal.prototype.sayName = function() {
    console.log("Hi my name is " + this.name);
};

// define a Penguin class
function Penguin() {
    this.name = "penguin";
    this.numLegs = 2;
}

// set its prototype to be a new instance of Animal
var penguin = new Animal("Penguin", 2);

penguin.sayName();

编译器要求我"Create a new Penguin instance called penguin"...

不确定我做错了什么

下面是如何使用 javascript 中的原型继承来制作继承自 Animal 的 Penguin 对象:

// the original Animal class and sayName method
function Animal(name, numLegs) {
    this.name = name;
    this.numLegs = numLegs;
}
Animal.prototype.sayName = function() {
    console.log("Hi my name is " + this.name);
};


// define a Penguin class
function Penguin() {
    this.name = "penguin";
    this.numLegs = 2;
}
// set its prototype to be a new instance of Animal
Penguin.prototype = new Animal();


// Create new Penguin
var penguin = new Penguin();

penguin.sayName(); // outputs "Hi my name is penguin"
var legCount = penguin.numLegs; // outputs 2

这里有一篇文章详细解释了 JavaScript 原型继承: http://pietschsoft.com/post/2008/09/JavaScript-Prototypal-Inheritence-Explained-in-Simple-Terms