10

これは遠投ですね…

Javascript で、確かに存在するオブジェクト属性にアクセスしていましたが、キーの名前にタイプミスがあったため、戻っundefinedてバグを作成していました。

次のようなコードを記述するにはどうすればよいですか。ただし、キーが存在しないため、エラーがスローされます。

var obj = {'myKey': 'myVal'},
    val = obj.myKye;

オブジェクトのメンバーにアクセスするたびに使用するラッパー関数を作成する必要のない解決策を見つけようとしています。出来ますか?オブジェクト属性にアクセスするためのJavascriptの別の「より厳密な」手法はありますか?

4

5 に答える 5

0

次の方法を試すことができます。

1) 使用typeof:

try {
    var obj = {'myKey': 'myVal'}, val;

   if(typeof (obj.myKye) === 'undefined')
   {
      var e = new NotImplementedError("NotImplementedError Your_message");
      throw e;
   } 
   else
   {
     val = obj.myKye;
   }    
    alert(val);
   }
catch(e) 
  {
    alert(e);
  }

2) 使用obj.hasOwnProperty(prop):

try {
    var obj = {'myKey': 'myVal'}, val;

   if(obj.hasOwnProperty(myKye))
   {
     val = obj.myKye;
   } 
   else
   {
      throw 'Property undefined';
   }
    alert(val);
   }
catch(e) 
  {
    alert(e);
  }
于 2013-06-21T05:50:04.733 に答える
-1

を使用してtry-catchReferenceErrorhasOwnPropertyを作成できます。

var obj = {
        'myKey': 'myVal'
}, val;

try {
    if(obj.hasOwnProperty(myKye))
    {
        val = obj.myKye;
        alert(val);
    }

    else{
        var ex =  new ReferenceError()
    }
}
catch(ex) {
    alert(ex);
}

リンクのテスト

アップデート:

obj.myKye戻りundefined、例外をスローしません。

それがJS言語仕様です。

オブジェクトは未定義のプロパティ名に対して未定義を返しますが、未定義の変数参照はエラーをスローします

于 2013-06-21T05:37:40.493 に答える