2011-09-02 124 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/

事实证明,你可以很容易地模仿原型语言的基于类的语义,但不是相反的方式。