問題タブ [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 - 「hasOwnProperty」が必要ないのはいつですか?
hasOwnProperty
不要な場合は?
本JavaScript: The Good Partsには、「通常は必要である」と記載されている次の内容が含まれています。
もう 1 つの形式 ( と呼ばれる
for in
) は、オブジェクトのプロパティ名 (またはキー) を列挙します。各反復で、オブジェクトの別のプロパティ名文字列が変数に割り当てられ ます。通常、objectをテストする必要があります。
hasOwnProperty(
変数)
を使用して、プロパティ名が本当にオブジェクトのメンバーであるか、または代わりにプロトタイプ チェーンで見つかったかを判断します。
より具体的には、単純な辞書のようなオブジェクトのプロパティを列挙したいと思います。これは、Javasacript オブジェクト リテラル構文を使用して作成されます。次に例を示します。
または以下を使用して作成された同様のオブジェクトJSON.parse
:
オブジェクトに対してhasOwnProperty
行うときに使用する必要for in
がありますか?foo
この JavaScript が、複雑な Web ページの一部としてランダムなブラウザーで実行されているとします。
答えは、「実際には、おそらく/通常は必要ありません。理論的には、一部のフレームワークまたはライブラリObject.prototype
が変更によってプロパティを追加した場合に必要になる可能性がありますObject.prototype
が、そのように変更することは、立派なフレームワークが行う可能性が低い侵入的な悪い習慣になります。 "?
typescript - Typescript: object.hasOwnProperty() は、継承されたプロパティで true を示します。なんで?
私が正しく理解していればobject.hasOwnProperty()
、親クラスの継承されたプロパティで false を返す必要があります。ただし、次のコードは、独自のプロパティと継承されたプロパティの両方で true を返します。
私の理解/コードはhasOwnPropery()
間違っていますか、それとも間違っていますか? それが私なら、自分のプロパティと継承されたプロパティをどのように区別しますか?
編集: サンプル コードにユース ケースを追加しました。
子fromDb()
はそれ自体のプロパティのみを処理し、代わりに親によって設定されたプロパティをオーバーライドすると思いますfromDb()
。
コンソール:
javascript - 複数のプロパティを持つ hasOwnProperty
オブジェクトにいくつかのプロパティがあるかどうかを調べようとしていますが、hasOwnProperty メソッドの使用に問題があります。
私は配列でメソッドを使用しています(ドキュメントに文字列が記載されていることは知っています)。
次の行は true を返します。
この行も true を返します。
しかし、これは false を返します:
そして、私はそれが真を返す必要があります。使用しているプロパティを取得するために Object.keys(object) を使用しています。配列が返されるため、hasOWnProperty で配列を使用する必要があります。
私が見逃している理論的な概念はありますか?そして、この問題を解決する方法はありますか?