プロパティ名を保持する変数を使用してオブジェクト プロパティが存在するかどうかを確認するにはどうすればよいでしょうか? 質問する

プロパティ名を保持する変数を使用してオブジェクト プロパティが存在するかどうかを確認するにはどうすればよいでしょうか? 質問する

問題のプロパティ名を保持する変数を持つオブジェクト プロパティの存在を確認しています。

var myObj;
myObj.prop = "exists";
var myProp = "p"+"r"+"o"+"p";

if(myObj.myProp){
    alert("yes, i have that property");
};

これはundefined、探しているmyObj.myPropが、確認したいからですmyObj.prop

ベストアンサー1

var myProp = 'prop';
if(myObj.hasOwnProperty(myProp)){
    alert("yes, i have that property");
}

または

var myProp = 'prop';
if(myProp in myObj){
    alert("yes, i have that property");
}

または

if('prop' in myObj){
    alert("yes, i have that property");
}

hasOwnPropertyは継承されたプロパティをチェックしませんが、はチェックすることに注意してくださいin。たとえば、'constructor' in myObjは true ですが、 はmyObj.hasOwnProperty('constructor')そうではありません。

おすすめ記事