[英]Javascript, class inheritence, method overriding
我正在尋找一個簡單的示例,用Javascript創建一個類,然后在子類中繼承該類。 我特別在尋找方法重寫的示例。 我意識到Javascript沒有支持傳統OOP的語法,這似乎是我遇到的問題的根源。
這是一個簡單的示例,顯示了許多方法之一。 我通常使用John Resig的系統 。
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();
您需要研究對象原型,但是您將沒有傳統的子類化和繼承。
我建議您查看javascript花園的簡要說明: http : //bonsaiden.github.com/JavaScript-Garden/#object 。 雄辯的JavaScript在JS中有關OOP的章節更加詳細: http : //eloquentjavascript.net/chapter8.html
Javascript沒有類,它的原型繼承可能有點奇怪。
也就是說,coffee腳本可以正確執行此操作,並生成大量的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
另外,約翰·里肯(John resign)編寫了一個可能適合您的簡單課堂策略。 http://ejohn.org/blog/simple-javascript-inheritance/
事實證明,您可以使用原型語言輕松模擬基於類的語義,但反之則不行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.