我有问题。我正在开发一个相当大的 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/
能帮帮我吗?谢谢!
PS 不,实际上,整个动物都是隐喻的,我实际上并不是在为动物园编程。:)