_if (someVar.hasOwnProperty('someProperty') ) {
// do something();
} else {
// do somethingElse();
}
_
hasOwnProperty('someProperty')
の正しい使用/説明は何ですか?
オブジェクトsomeVar
にsomeProperty
という名前のプロパティが含まれているかどうかを確認するために、単に_someVar.someProperty
_を使用できないのはなぜですか?
この場合のプロパティとは何ですか?
このjavascriptはどのプロパティをチェックしますか?
hasOwnProperty
は、呼び出しているオブジェクトに引数の名前のプロパティがあるかどうかを示すブール値を返します。例えば:
var x = {
y: 10
};
console.log(x.hasOwnProperty("y")); //true
console.log(x.hasOwnProperty("z")); //false
ただし、オブジェクトのプロトタイプチェーンは参照しません。
for...in
コンストラクトを使用してオブジェクトのプロパティを列挙するときに使用すると便利です。
完全な詳細を確認したい場合、 ES5仕様 は、いつものように見るのに適した場所です。
短く正確な答えを次に示します。
JavaScriptでは、すべてのオブジェクトに、オブジェクトに関するメタ情報を持つ組み込みのキーと値のペアがあります。オブジェクトに対して_for...in
_コンストラクト/ループを使用してすべてのキーと値のペアをループすると、このメタ情報のキーと値のペアもループします(これは望ましくありません)。
hasOwnPropery(property)
filters-outを使用して、メタ情報を介したこれらの不必要なループと、パラメータproperty
がオブジェクト内のユーザー指定のプロパティかどうか。 filters-out、つまり、hasOwnProperty(property)
は、property
がオブジェクトのプロトタイプチェーンに存在するかどうかを確認しません別名メタ情報。
それに基づいてブール値_true/false
_を返します。
以下に例を示します。
_var fruitObject = {"name": "Apple", "shape": "round", "taste": "sweet"};
console.log(fruitObject.hasOwnProperty("name")); //true
console.log(Object.prototype.hasOwnProperty("toString");) //true because in above snapshot you can see, that there is a function toString in meta-information
_
私はそれが明確であることを願っています!
それはチェックします:
オブジェクトに指定された名前のプロパティがあるかどうかを示すブール値を返します
hasOwnProperty メソッドは、オブジェクトに指定された名前のプロパティがある場合はtrueを返し、ない場合はfalseを返します。このメソッドは、プロパティがオブジェクトのプロトタイプチェーンに存在するかどうかをチェックしません。プロパティはオブジェクト自体のメンバーでなければなりません。
例:
var s = new String("Sample");
document.write(s.hasOwnProperty("split")); //false
document.write(String.prototype.hasOwnProperty("split")); //true
hasOwnProperty()
は、任意のオブジェクトで呼び出すことができ、入力として文字列を受け取る関数です。プロパティがオブジェクトにある場合はtrue
であるブール値を返し、そうでない場合はfalseを返します。 hasOwnProperty()
は_Object.prototype
_にあるため、どのオブジェクトでも使用できます。
_function Person(name) {
this.name = name;
}
Person.prototype.age = 25;
const willem = new Person('willem');
console.log(willem.name); // property found on object
console.log(willem.age); // property found on prototype
console.log(willem.hasOwnProperty('name')); // name is on the object itself
console.log(willem.hasOwnProperty('age')); // age is not on the object itself
_
この例では、新しいPersonオブジェクトが作成されます。各Personには、コンストラクターで初期化される独自の名前があります。ただし、年齢はオブジェクト上ではなく、オブジェクトのプロトタイプ上にあります。したがって、hasOwnProperty()
は、名前にtrue
を返し、年齢にfalse
を返します。
hasOwnProperty()
は、_for in
_ループを使用してオブジェクトをループするときに非常に役立ちます。プロパティがプロトタイプではなくオブジェクト自体からのものであるかどうかを確認できます。例えば:
_function Person(name, city) {
this.name = name;
this.city = city;
}
Person.prototype.age = 25;
const willem = new Person('Willem', 'Groningen');
for (let trait in willem) {
console.log(trait, willem[trait]); // this loop through all properties including the prototype
}
console.log('\n');
for (let trait in willem) {
if (willem.hasOwnProperty(trait)) { // this loops only through 'own' properties of the object
console.log(trait, willem[trait]);
}
}
_
hasOwnPropertyは、文字列の引数を取る通常のJavaScript関数です。
あなたの場合、somevar.hasOwnProperty( 'someProperty')は、somevar関数がsomeproperyを持っているかどうかをチェックし、trueとfalseを返します。
いう
function somevar() {
this.someProperty= "Generic";
}
function welcomeMessage()
{
var somevar1= new somevar();
if(somevar1.hasOwnProperty("name"))
{
alert(somevar1.hasOwnProperty("name"));// it will return true
}
}
Object.hasOwnProperty(p)を使用して、オブジェクトにenumerableプロパティがあるかどうかを判断しますp-
オブジェクトは、「デフォルト」のメソッドと属性がオブジェクトのすべてのインスタンスに割り当てられる独自のプロトタイプを持つことができます。 hasOwnPropertyは、コンストラクターで具体的に設定されたプロパティ、または後でインスタンスに追加されたプロパティに対してのみtrueを返します。
オブジェクトに対してpがどこでも定義されているかどうかを判断するには、if(p instanceof object)を使用します。pはプロパティ名文字列に評価されます。
たとえば、デフォルトではすべてのオブジェクトに「toString」メソッドがありますが、hasOwnPropertyには表示されません。
それ オブジェクトにプロパティがあるかどうかをチェックする 。私の知る限り、if(obj.prop)
と同じように機能します。