1

我想让一个属性在未定义的情况下抛出错误,就像在这个问题中一样。该问题的每个答案都建议使用 Python 的@property装饰器在未定义该字段时引发异常。我怎么能在 JS 中做到这一点?

编辑:

我希望相当于:

var MyObj = {
  method: function(){
    throw new Error('This method is not implemented');
  }
};

...但更接近:

var MyObj = {
  attribute: throw new Error('This attribute is not defined');
};
4

1 回答 1

3

这个问题可以分为两部分,

var myObj = {}; // just an example, could be a prototype, etc

如何将不可枚举的属性添加到Object

这是用Object.defineProperty

Object.defineProperty(myObj, 'foo', {get: function () {/* see next part */}});

我定义了一个getter,因此您将看到错误消息而无需使用()来调用该函数。

我怎样才能抛出错误?

这就像使用throw语句一样简单。与您要查找的内容最接近的JavaScript错误类型很可能是ReferenceError

throw new ReferenceError("Subclasses should implement this!");
于 2013-05-28T18:07:53.660 回答