もう一方を使用する必要がありますか?それらをすべて一緒に使っていますか?ありがとう。 obj
は、それが単にプロトタイプから継承されます場合でも、全くprop
という名前のプロパティを持っているかどうかをobjとobj.hasOwnProperty(prop)とobj [prop]のpropの違いは?
7
A
答えて
19
prop in obj
チェック。obj
自体がprop
という名前のプロパティを保持しているかどうかをobj.hasOwnProperty(prop)
チェック。プロトタイプから継承したプロパティは無視されます。obj[prop]
は、prop
プロパティの値を取得します。 1あなたは注を達成しようとしている何のために適切な方
使用:3つのすべてのケースでは、prop
は文字列でなければなりません。
console.log("legs" in dog); // TRUE - due to JS inheritance and since 'in' key looks into inherited prototypes
console.log(dog.hasOwnProperty("legs")); // FALSE
console.log(dog.hasOwnProperty("barks")); //TRUE
プリント
true
false
true
注1つのより多くの事::犬が持っていた場合は、「足になりました、これはそれを意味
var animal = {"legs": 4};
var dog = {"barks" : true};
dog.__proto__ = animal; // JS inheritance (dog inherits from animal)
:ちょうどこのために例を与えるために
+0
obj.propとobj ['との間に違いがあるかどうか教えてください。 prop ']? SLaks –
0
"プロパティは5を言うことができます。(hhmm spooky i know)ので、 'in'演算子(犬の" legs ")は" legs "プロパティw hichは犬オブジェクトで宣言され、動物オブジェクトからの継承された "脚"には宣言されません。例えば:
var animal = {"legs": 4};
var dog1 = {"barks": true};
var dog2 = {"barks": true, "legs": 5};
dog1.__proto__ = animal;
dog2.__proto__ = animal;
console.log(dog1.legs);
console.log(dog2.legs);
console.log("legs" in dog2) // 'in' refer to the un-inherited "legs" of dog2
プリント
4
5
true
関連する問題
[オペレータにMDN(https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special/in)、[MDN hasOwnPropertyを( https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/hasOwnProperty)、[MDNメンバー演算子](https://developer.mozilla.org/ja/JavaScript/Reference/Operators/Member_Operators) – user113716
更新されたリンク:[MDN 'in'演算子](https://developer.mozilla.org/ja/JavaScript/Reference/Operators/in)。 [MDN 'hasOwnProperty'](https://developer.mozilla.org/ja/JavaScript/Reference/Global_Objects/Object/HasOwnProperty)。 [MDNメンバー演算子、ブラケット記法](https://developer.mozilla.org/ja/JavaScript/Reference/Operators/Member_Operators#Bracket_notation) –