2013-06-28 240 views
0

因此,這裏是我的JavaScript:原型繼承爲什麼子對象不能從父對象繼承方法?

http://jsfiddle.net/GPNdM/

我有延伸哺乳動物的原型貓對象。哺乳動物有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(); 

任何想法爲什麼?

+0

您的對象一般不會繼承函數對象。大多數情況下,它們將通過'.prototype'屬性從函數中懸掛的奇怪小對象繼承。 –

回答

5

它應該是Cat.prototype = Object.create(Mammal.prototype),這就是方法所在,而不是直接在Mammal上。

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

+1

謝謝。仍然試圖圍繞這個原型繼承:P –