// A convenient function that can be used for any abstract method
function abstractmethod() { throw new Error("abstract method"); }
// The AbstractSet class defines a single abstract method, contains().
function AbstractSet() { throw new Error("Can't instantiate abstract classes");}
AbstractSet.prototype.contains = abstractmethod;
从“Javascript:通用指南 - 9.7.4类层次结构和抽象类” 我了解抽象类在JavaScript中的实用程序。我不明白的是设置只会抛出错误的抽象方法的必要性或使用。您不能创建该类的实例,因此只有子类的实例存在。他们每个人都有自己的定义这些方法,所以为什么要建立一个只抛出一个通用错误的方法的继承?JavaScript中抽象方法的用途是什么?
非常感谢您的指导。
他们是“抽象的”,正是因为他们抛出错误。这是一种防止抽象基类无意使用的机制,不是吗? –
是的,这可以解释构造函数中的'throw'。我对创建原型方法感到困惑,它只会抛出一个错误。在我看来,如果contains()方法仅用于在这里抛出一个错误,为什么不等待在第一个子类(抽象或具体)中定义它,实际上会更完全地定义它呢? – Marlin
为什么要等待定义它?它是定义子类应遵循的“合约”的抽象/基类。实现它的类将覆盖它,移除异常。不(抽象子类)的类可以只依赖其父类来提供异常。 –