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

标签 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');
};

最佳答案

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

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

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

这是用 Object.defineProperty 完成的

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

我定义了一个 getter,因此您无需使用 () 调用函数就可以看到错误消息。

我怎样才能抛出错误?

这就像使用 throw 一样简单陈述。 JavaScript 最接近 Error输入您要查找的内容很可能是 ReferenceError .

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

关于javascript - 在 JS 中访问属性时如何抛出错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16798554/

相关文章:

javascript - 根据第一个值在第二个 Select2 下拉列表中显示选项

javascript - 在选择框的 onchange 期间调用 JavaScript 函数

python - 在类中声明装饰器

python - 如何在 Python 中将全局标记为已弃用?

python - 我的装饰器适用于常规功能,但不适用于实例

Python并测量以毫秒为单位的时间并在满足阈值时中止

javascript - 如何匹配单个后代(如 $.find())而不在找到 DOM 树的其余部分后进行搜索?

javascript - Sequelize-cli:在播种文件之前预运行另一个种子文件?

javascript - 如何将所有静态字符串放在一处

python - 更 retrofit 饰器内的实例属性