我正在寻找一个在Javascript中创建类的简单示例,然后在子类中继承。我正在寻找一个方法重写的例子。我意识到Javascript没有支持传统OOP的语法,这似乎是我问题的根源。
答案 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();
答案 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/
事实证明,您可以轻松地在原型语言中模拟基于类的语义,但不是相反。