2011-09-02 163 views
1

我正在尋找一個簡單的例子,在JavaScript中創建一個類,然後在子類中繼承。我正在尋找一個方法重寫的例子。我意識到Javascript沒有支持傳統OOP的語法,這似乎是我的問題的根源。Javascript,類繼承,方法覆蓋

+3

注意,實際上JavaScript沒有類的。 – pimvdb

+0

您可能會發現閱讀這些文章很有幫助:http://www.crockford.com/javascript/inheritance.html和http://ejohn.org/blog/simple-javascript-inheritance/ – scrappedcola

+0

[Performing Inheritance在Javascript中](http://stackoverflow.com/questions/1586915/performing-inheritance-in-javascript)和[什麼是在Javascript中的「繼承」?](http://stackoverflow.com/questions/5027045/what-是繼承式的JavaScript)。 –

回答

4

這裏是表示這樣做的許多方式之一的簡單例子。我通常使用John Resig's system

function Animal(name) { 
    this.name = name; 
} 

Animal.prototype.eat = function() { 
    alert(this.name + " is eating"); 
}; 

Animal.prototype.speak = function() { 
    alert("Hi my name is " + this.name); 
}; 


function Cow(name) { 
    this.name = name; 
} 
Cow.prototype = new Animal(); 

Cow.prototype.speak = function() { 
    alert("Moooo"); 
}; 



var a = new Animal("John"); 
a.eat(); 
a.speak(); 

var c = new Cow("Mary"); 
c.eat(); 
c.speak(); 

http://jsfiddle.net/Xeon06/JK5vX/2/

0

Javascript沒有類,它的原型繼承可能有點奇怪。

這就是說,咖啡腳本是正確的,並且會產生大量的JS腳手架代碼,您永遠都不想自己編寫代碼以使其工作。

class Foo 
    word: -> 'foo' 
    say: -> alert word() 

class Bar extends Foo 
    word: -> 'bar' 

bar = new Bar() 
bar.say() 

哪個編譯成這個毛團的JS:https://gist.github.com/1189853


此外,約翰辭職寫了一個簡單的類策略,可能會根據自己的喜好。 http://ejohn.org/blog/simple-javascript-inheritance/

事實證明,你可以很容易地模仿原型語言的基於類的語義,但不是相反的方式。