在JS中访问属性时如何抛出错误?

时间:2013-05-28 18:00:37

标签: javascript decorator

如果未定义属性,我希望有一个属性抛出错误,如this question中所示。该问题的每个答案建议使用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');
};

1 个答案:

答案 0 :(得分:3)

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

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

如何向对象添加不可枚举的属性?

这是通过Object.defineProperty

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

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

如何抛出错误?

这就像使用throw语句一样简单。与您正在寻找的 JavaScripts 最接近的Error类型很可能是ReferenceError

throw new ReferenceError("Subclasses should implement this!");