問題タブ [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 - JavaScript のプロトタイプ継承と hasOwnProperty メソッドに関する私のジレンマ
基本的に、JavaScript でメンバ列挙について書いている人は皆hasOwnProperty
、プロトタイプ チェーンを上がらないようにメソッドを使用することを強く推奨しています。
これは、たとえばObject.prototype
. しかし、他の継承されたメンバーはどうですか? たとえば、プロトタイプ チェーンで非常に近いメンバー...実際に列挙したいメンバーです。
私が次のものを持っているとしましょう:
上記のサンプルでは、 のみage
が表示されます。これは、 が...他の 2 つのメンバーage
の唯一の直接メンバーであり、 と がプロトタイプ チェーンの上にあるためです。mary
name
surname
しかし、明らかに、3 つのメンバーすべてを構成内で反復処理する必要がありfor..in
ます。ただし、を削除すると、誰かが関数を追加した場合hasOwnProperty
にメンバーを取得できます。Object.Prototype
これが私のジレンマです。
プロトタイプの継承をメソッドと組み合わせて使用しますが、hasOwnProperty
列挙中にチェーンの上位にあるメンバーを取得するリスクがありますか?
それとも、プロトタイプではなくオブジェクトにメンバーを直接追加する他の形式の継承を使用しますか?
javascript - 関数をJSONオブジェクトにバインドする方法は?
1)にアクセスできますper.f_IncreaseSalary(0.2)
が、JSON文字列からこのオブジェクトを作成した場合、f_IncreaseSalary関数にアクセスするにはどうすればよいですか?
2)Personクラスの機能を持つsPerオブジェクトを作成するにはどうすればよいですか?
3)機能があることをどのように理解できますか?sPer
f_IncreaseSalary
javascript - hasOwnProperty と ECMAScript 5 厳格モード
私は興味があります: ECMAScript5 仕様が厳密モードで事前定義されたオブジェクト プロトタイプのプロパティを強化していない理由を知っている人はいますか? たとえば、hasOwnProperty の定義方法に関する情報はないようです。私はそれを再定義しようとしました (そして FF4 ベータ版でコードをテストしました) が、これでうまくいくことができました。私が何も悪いことをしていなければ、これは誰でもObject.prototype.hasOwnPropertyプロパティを再定義でき、プロパティを動作させるためにそれに依存するすべてのコードを実際に台無しにすることができることを意味します...
これについての考え?
編集:仕様を掘り下げると、もう少し情報が...
以下のコメントにあるように、Object.prototype に適用されたメタデータ (Writable、Enumerable、および Configurable がすべて false に設定されている) と FF 4 ベータ版 (これは私がテストを実行するために使用しています) は例外を生成します。
ありがとう。
javascript - ここで Chrome と Firefox に違いがあるのはなぜですか?
for(.. in ..) と hasOwnProperty に基づいた再帰関数を使用してオブジェクトを複製しています。これは IE と FF では正常に機能しますが、Chrome では機能しません。
for(... in ...) を使用してオブジェクトのメンバーを反復処理すると、オブジェクトが DOM オブジェクトの場合、Firefox と Chrome で hasOwnProperty の結果が異なります。
Chrome コンソールと Firebug(FF) のコンソールに次のように入力すると、異なる結果が得られます。
Firefox の出力:
コンストラクター
addEventListener
クロム出力:
clientLeft
scrollHeight
firstElementChild
offsetParent
ch
offsetWidth
isContentEditable
hidden
previousElementSibling
parentElement
localName
children
ownerDocument
nodeValue
lastElementChild
rowIndex
offsetLeft
tagName
className
prefix
innerHTML
previousSibling
namespaceURI
id
childElementCount
innerText
scrollLeft
clientHeight
align
textContent
nextSibling
scrollWidth
offsetHeight
chOff
clientWidth
nodeName
style
lang
scrollTop
offsetTop
childNodes
baseURI
nextElementSibling
vAlign
sectionRowIndex
classList
title
firstChild
attributes
dataset
outerText
cells
parentNode
clientTop
tabIndex
contentEditable
outerHTML
dir
lastChild
bgColor
nodeType
スペルチェック
ドラッグ可能
hasOwnProeperty に対して true としてフラグが立てられたすべての余分なプロパティは、私のコードで「無限/十分にクラッシュする」再帰を引き起こしています。プロパティがDOMオブジェクトプロパティに組み込まれているかどうかを判断する方法はありますか? または他の解決策..
javascript - toStringとhasOwnProperty(etc)がJavaScriptのfor-inループに表示されないのはなぜですか?
私は別の開発者とhasOwnPropertyについて話していましたが、JavaScriptのfor-inループでどのように使用するのかについて話していましたが、彼は良い質問をしました。for-inループを実行すると、toString、hasOwnProperty、およびその他の組み込みメソッドがループに表示されないのはなぜですか?
javascript - 「オブジェクトはこのプロパティまたはメソッドIEをサポートしていません」JavascriptのエラーはおそらくhasOwnPropertyを使用したことによるものですか?
何らかの理由でIE8とIE7でこのエラーが発生します。オブジェクト内のすべてのキーをループしていますが、次のように表示され続けますObject doesn't support this property or method
。
ブロック全体は以下のとおりです。
誰かがこれをDougCrockfordのjslintボードに投稿し、彼は次のように応答しました。
for(key in object){if(Object.prototype.hasOwnProperty.call(object、key)){...}}
hasOwnPropertyはメソッドではなく演算子である必要があります。これは、メソッドであるため、この種の問題が発生しやすいためです。しかし、それはそれが何であるかなので、あなたはそれを回避しなければなりません。
Chrome、FF、Safari、Operaなどで通常どおり正常に動作します。回避策について何かアイデアはありますか?
javascript - オブジェクトには hasOwnProperty メソッドがありません (つまり、未定義です) - IE8
これはかなり奇妙に思えます。
IE8 コンソールでの実験は次のとおりです。
何がこれを引き起こす可能性があるかについてのアイデアはありますか?
javascript - JavaScript:メンバーは定義されていますか?
foo
特定のオブジェクト(例)に特定のプロパティ(例bar
)が定義されているかどうかを判断する方法は4つあるように思われます。
if (foo.hasOwnProperty(bar)) {
if ('bar' in foo) {
if (typeof foo.bar !== 'undefined') {
if (foo.bar === undefined) {
bar
オブジェクトに""という名前のプロパティがあるかどうかを判断するには、foo
これら3つのステートメントすべてが同等ですか?これらの3つのステートメントのいずれかを異なるものにする、私が知らない微妙なセマンティクスはありますか?
actionscript-3 - Flex4.6hasOwnPropertyが機能しない
プロジェクトをFlex4.0からFlex4.6にアップグレードしましたが、すべてが大きなエラーなしで機能しているように見えました。
しかし、突然:私は
TypeError:エラー#1009:nullオブジェクト参照のプロパティまたはメソッドにアクセスできません。
hasOwnProperty
Flex4.0で完全に機能するコードで使用する場合
問題のコードは次のとおりです。
誰かが私がこれを回避する方法について私にアドバイスできますか?
どうぞよろしくお願いします。
C