我正在尋找一個簡單的例子,在JavaScript中創建一個類,然後在子類中繼承。我正在尋找一個方法重寫的例子。我意識到Javascript沒有支持傳統OOP的語法,這似乎是我的問題的根源。Javascript,類繼承,方法覆蓋
1
A
回答
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();
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/
事實證明,你可以很容易地模仿原型語言的基於類的語義,但不是相反的方式。
1
你需要看看對象的原型,但是你不會有傳統的子分類和繼承。
我建議你在簡潔的說明中查看javascript花園:http://bonsaiden.github.com/JavaScript-Garden/#object。能言善辯的JavaScript對OOP更詳細的章節中JS:http://eloquentjavascript.net/chapter8.html
相關問題
- 1. 如何覆蓋繼承類的方法
- 2. 魔法方法如何覆蓋繼承
- 3. Python - 繼承和方法覆蓋
- 4. C# - 繼承,覆蓋
- 5. Javascript繼承方法覆蓋不起作用
- 6. JavaScript繼承對象覆蓋其他繼承對象
- 7. 覆蓋Objective-C中的繼承類型
- 8. 無法繼承和覆蓋ArrayAdapter
- 9. C++:覆蓋public/private繼承
- 10. 覆蓋繼承的行爲
- 11. 覆蓋繼承的成員?
- 12. CSS覆蓋/不繼承
- 13. 方法B用於方法A;在繼承類中,使A被覆蓋B
- 14. JavaScript - 原型繼承而不覆蓋基類
- 15. JavaScript子類化和方法覆蓋
- 16. 覆蓋子/繼承形式的父django表單的clean()方法
- 17. 我可以在繼承中只覆蓋一種方法嗎?
- 18. 繼承jQuery UI的對話框,並調用覆蓋的方法
- 19. 繼承,覆蓋方法和構造函數
- 20. 覆蓋PHP中沒有繼承的實例方法?
- 21. 繼承現有的Web部件並覆蓋方法
- 22. 代碼契約與繼承(上覆蓋的方法前提)
- 23. 如何使用繼承覆蓋equals()方法?
- 24. Java文檔覆蓋方法不會繼承DOD
- 25. node.js對象繼承覆蓋對象方法
- 26. Java的泛型方法的繼承和覆蓋規則
- 27. Javascript類繼承
- 28. JavaScript類繼承
- 29. (覆蓋||擴展)JavaScript方法
- 30. 的Javascript,從覆蓋方法
注意,實際上JavaScript沒有類的。 – pimvdb
您可能會發現閱讀這些文章很有幫助:http://www.crockford.com/javascript/inheritance.html和http://ejohn.org/blog/simple-javascript-inheritance/ – scrappedcola
[Performing Inheritance在Javascript中](http://stackoverflow.com/questions/1586915/performing-inheritance-in-javascript)和[什麼是在Javascript中的「繼承」?](http://stackoverflow.com/questions/5027045/what-是繼承式的JavaScript)。 –