問題タブ [hasownproperty]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - オブジェクトにプロパティがあるかどうかを確認する最良の方法はどれですか
ajax 応答オブジェクトにプロパティがあるかどうかを確認する正しい方法はどれかお聞きしたいと思います。私が見つけたのは、これにアプローチするさまざまな方法があるということです。
例えば:
ただし、確かに他の方法があります。たとえば、次のとおりです。
賛否両論あると思いますので、よろしければ教えてください。
ありがとう
javascript - hasOwnProperty を使用する場合、null または undefined をオブジェクトに変換できません
hasOwnProperty
よりエレガントな方法で使用しようとしています。
私はここにこのコードを持っています。
ただし、省略形として渡そうとするとobj.hasOwnProperty
(これは機能するはずです)、期待どおりに動作しません。
パラメータが正しく渡されることを確認するために、次のhasOwnProperty
テスト ケースを設定しました。
a
、b
およびbamboo
すべてがコンソールに記録されるため、パラメーターが正しく渡されていることがわかります。
の動作が正しく機能しないのはなぜhasOwnProperty
ですか?
javascript - hasOwnProperty() の代わりに in 演算子を使用する必要がある場合はありますか?
JavaScript では、in
オペレーターはオブジェクトが指定されたプロパティーを持っているかどうかをチェックします。ただし、オブジェクト自体のプロパティだけでなく、プロトタイプ チェーンもチェックします。したがって、場合によっては、期待どおりに動作しないことがあります。
何らかの理由で、someArrayMethods
(明らかに) いくつかの配列メソッドをキーとして含むオブジェクトがあるとします。
in
演算子を使用して、そのオブジェクトにキーとして特定のメソッドがあるかどうかを確認できます。
toString
プロパティをチェックしようとした場合はどうなりますか?
サプライズ!このオブジェクトにはプロトタイプ チェーンにtoString
メソッドがあることが判明したため、オブジェクトに独自のプロパティがなくても、in
演算子は返されます。true
toString
そして、ここでhasOwnProperty()
救助に来ます!演算子とほぼ同じですがin
、1 つの違いがあります。プロトタイプ チェーンをチェックしません。前の例を次のように書き直すことができます。
今では期待どおりに動作します。残念ながら、hasOwnProperty()
1 つのケースで失敗することもあります。独自のプロパティを持つオブジェクトがあった場合はどうなるhasOwnProperty
でしょうか? 次の例を参照してください。
この問題を解決するには、 を使用する代わりに、someObject.hasOwnProperty
からそのメソッドを直接参照できますObject.prototype
。
これは、オブジェクトに何らかのプロパティがあるかどうかを確認するための最も合理的なアプローチのようです。それにもかかわらず、演算子が役立つ場合はありin
ますか? あるクラスのインスタンスに何らかのメソッドがあるかどうかを確認するために使用できることは知っていますが、この場合、そのオブジェクトがそのクラスのインスタンスであるかどうかを単純に確認する方がよいのではないでしょうか?
補足として、別のオプションはObject.keys()
ECMAScript 2016で使用することですArray.prototype.includes()
:
hasownproperty - 配列で hasOwnProperty () を使用する
ここでは、チェックされた値が の場合にのみ必要ですtrue
。true
とfalse
が追加されました。
javascript - ES6 プロキシを使用して Object.hasOwnProperty をトラップする
ES6 プロキシを使用して、次の一般的なコードをトラップしたいと考えています。
しかし、プロキシのドキュメントを確認した後、主にhas
トラップ トラップがin
オペレーター用であり、上記のコードでは使用されていないようであり、操作用のトラップがないため、その方法がわかりませんhasOwnProperty
。
cordova - Ionicは未定義のプロパティ 'hasOwnProperty'を読み取れません
Ionic フレームワークを使用しています。ionic cli の新しいバージョンにアップグレードしたところ、実行中にこのエラーが発生しionic serve
ました。
ionic serve
この問題を修正して、プロジェクトをまたはionic build
再度実行できるようにするにはどうすればよいですか?
javascript - Node.js: hasOwnProperty の呼び出しが global.hasOwnProperty と異なるのはなぜですか?
これは初心者の質問かもしれませんが、説明を見つけたり考えたりすることができません。
Node.js コンソールを開始し、次のことを行います。
それでなんで
しかし
?