在Dojo中调用重写方法

时间:2010-05-29 17:48:54

标签: javascript inheritance dojo

在dojo中,不能在派生类中使用相同方法之外调用重写的超类方法(除此之外,还可以使用class_name.function_name.apply调用)。这个功能不再存在,因为一些重构和dojo家伙不会把它放回去,因为他们不相信这个足够好的情况。有关详细信息,请阅读this mail thread。这个功能是否足够好?为什么或为什么不呢?

1 个答案:

答案 0 :(得分:0)

我认为这种行为有一个非常有效的用例。

考虑使用javascript对象实现state pattern。您可以通过维护当前对象中的成员变量以及原型中的所有特定于状态的函数来完成此操作。只需不断更改原型以移至不同的状态。

现在,当你想要将状态模式与template method pattern结合起来时,你可以简单地将状态函数称为super()(就像在python中一样)。这很重要,因为状态函数可能是模板方法类中的钩子或抽象函数。如果它们是前者,那么你应该能够调用这些方法的超类版本而不管当前超类是哪个超类。