1

この質問のように、属性が定義されていない場合はエラーをスローさせたいと思います。その質問に対する各回答は@property、フィールドが定義されていない場合に Python のデコレータを使用して例外を発生させることを示唆しています。どうすれば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

この質問は、2 つの部分に分けることができます。

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 に答える