【发布时间】:2012-11-18 02:28:48
【问题描述】:
我有一个问题。我正在开发一个相当大的 JavaScript 项目,并且正在学习如何使用 OOP。我相信你知道,这在 JS 中有点奇怪。
这就是我想要做的:我有一个基础“类”,我称之为AbstractAnimal。我还有另一门课叫Animals。在Animals 类中,我有三个组,分别称为Man、Monkey 和Elephant。我希望这些组中的每一个都继承AbstractAnimal,但要成为自己的功能,而不是连接到AbstractAnimal。
我最初是这样做的:
Animals.prototype.Man = AbstractAnimal;
Animals.prototype.Monkey = AbstractAnimal; //etc...
但是,遗憾的是,这并不能满足我的需要。原因如下:
AbstractAnimal.prototype.clicked = function() { console.log("clicked") };
//If I change Man...
animals.Man.clicked = function() { console.log("HA!"); };
//Monkey is effected too...
animals.Monkey.clicked();
//Console: "HA!"
在上面的例子中,当 Monkey 被点击时,我希望控制台说“点击”。当点击 Man 时,它应该说“HA!”。
所以我发现了一些我认为可以在这里做的事情:javascript class inherit from Function class
它几乎奏效了,但并不完全奏效。这是一个简化的测试用例:http://jsfiddle.net/9KRJk/2/
能帮帮我吗?谢谢!
附:不,实际上,整个动物都是隐喻的,我实际上并不是在为动物园编程。 :)
【问题讨论】:
标签: javascript oop inheritance