簡體   English   中英

Javascript,類繼承,方法覆蓋

[英]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();

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

您需要研究對象原型,但是您將沒有傳統的子類化和繼承。

我建議您查看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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM