問題のプロパティ名を保持する変数を持つオブジェクト プロパティの存在を確認しています。
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
問題のプロパティ名を保持する変数を持つオブジェクト プロパティの存在を確認しています。
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
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
本当ですが、そうでmyObj.hasOwnProperty('constructor')
はありません。
hasOwnPropertyを使用できますが、参照に基づいて、このメソッドを使用する場合は引用符が必要です。
if (myObj.hasOwnProperty('myProp')) {
// do something
}
もう 1 つの方法はin演算子を使用することですが、ここでも引用符が必要です。
if ('myProp' in myObj) {
// do something
}
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/in
みんなの支援と eval ステートメントを取り除くための推進に感謝します。変数は、ドット表記ではなく、括弧で囲む必要がありました。これは機能し、クリーンで適切なコードです。
これらはそれぞれ変数です: appChoice、underI、underObstr。
if(typeof tData.tonicdata[appChoice][underI][underObstr] !== "undefined"){
//enter code here
}