我正在尋找一個簡單的例子,在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. 魔法方法如何覆蓋繼承
- 4. Mixin覆蓋繼承的方法
- 5. PHP對象繼承和方法覆蓋
- 6. C++繼承與方法覆蓋
- 7. Java繼承和方法覆蓋
- 8. Java繼承和覆蓋方法 - 改性
- 9. Python - 繼承和方法覆蓋
- 10. 用原型繼承覆蓋方法
- 11. 覆蓋繼承中的空方法
- 12. 繼承:__init__覆蓋
- 13. C# - 繼承,覆蓋
- 14. Javascript繼承方法覆蓋不起作用
- 15. 公共虛擬方法在繼承類中被覆蓋保護
- 16. Knockout中的類繼承與方法覆蓋
- 17. 繼承從基類中的覆蓋方法
- 18. 蟒蛇我們可以覆蓋繼承2類的方法
- 19. VB> Reflection.Emit:繼承超類並覆蓋方法
- 20. 覆蓋沒有繼承的類方法(python)
- 21. JavaScript繼承對象覆蓋其他繼承對象
- 22. 2個不同的繼承類覆蓋
- 23. 覆蓋Objective-C中的繼承類型
- 24. 匿名類,繼承和覆蓋
- 25. 覆蓋繼承的行爲
- 26. 休眠繼承覆蓋
- 27. C++繼承函數覆蓋
- 28. 覆蓋模糊繼承
- 29. 覆蓋繼承的成員?
- 30. 繼承並覆蓋CSS
注意,實際上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)。 –