Javascript,类继承,方法覆盖

时间:2011-09-02 20:33:50

标签: javascript oop

我正在寻找一个在Javascript中创建类的简单示例,然后在子类中继承。我正在寻找一个方法重写的例子。我意识到Javascript没有支持传统OOP的语法,这似乎是我问题的根源。

3 个答案:

答案 0 :(得分: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/

答案 1 :(得分:1)

您需要查看对象原型,但是您不会有传统的子类和继承。

我建议您查看javascript Garden以获得简洁的解释:http://bonsaiden.github.com/JavaScript-Garden/#object。 Eloquent JavaScript在JS中有一个关于OOP的更详细的章节:http://eloquentjavascript.net/chapter8.html

答案 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/

事实证明,您可以轻松地在原型语言中模拟基于类的语义,但不是相反。