原型继承为什么子对象不从父对象继承方法?

时间:2013-06-28 23:44:18

标签: javascript

所以这是我的JavaScript:

http://jsfiddle.net/GPNdM/

我有一个Cat对象,它扩展了Mammal的原型。哺乳动物有run()方法。但是当我创建新的Cat对象并调用run()时,它告诉我它未定义:

function Mammal(config) {
    this.config = config;
}
Mammal.prototype.run = function () {
    console.log(this.config["name"] + "is running!");
}

function Cat(config) {
    // call parent constructor
    Mammal.call(this, config);
}
Cat.prototype = Object.create(Mammal);

var felix = new Cat({
    "name": "Felix"
});
felix.run();

知道为什么吗?

1 个答案:

答案 0 :(得分:5)

它应该是Cat.prototype = Object.create(Mammal.prototype),这是方法所在的位置,而不是直接在Mammal上。

http://jsfiddle.net/GPNdM/1/