概要
hasownProperty()メソッドは、オブジェクトに指定されたプロパティが含まれているかどうかを判断するために使用されます。
文法
obj.hasownproperty(prop)
パラメーター
•小道具
•検出される属性の名前。
説明する
Object.prototypeを継承するすべてのオブジェクトは、プロトタイプチェーンからHasownPropertyメソッドに継承されます。この方法は、オブジェクトに特定のプロパティが含まれているかどうかを検出するために使用できます。 in operatorとは異なり、この方法はプロトタイプチェーンから継承されたプロパティを無視します。
例
例1:HasownPropertyメソッドを使用して、オブジェクトに特定のプロパティが含まれているかどうかを判断します
次の例では、オブジェクトOに独自の属性プロップが含まれているかどうかを検出します。
コードコピーは次のとおりです。
o = new object(); o.prop = 'exists'; function changeo(){
o.newprop = o.prop;
o.prop;} o.hasownProperty( 'prop');
// trueを返します
changeo();
o.hasownproperty( 'prop');
// falseを返します
例2:あなた自身の属性と継承された属性の違い
次の例は、HasownPropertyメソッドの違いを示しています。独自の特性と継承された特性を扱います。
コードコピーは次のとおりです。
o = new object(); o.prop = 'exists'; o.hasownproperty( 'prop');
// trueを返します
o.hasownproperty( 'tostring');
// falseを返します
o.hasownproperty( 'hasownproperty');
// falseを返します
例3:オブジェクトのすべてのプロパティを繰り返します
次の例は、オブジェクトのすべてのプロパティを通過するときに、継承されたプロパティを無視する方法を示しています。 for .. inループは、通常私たちが望むものである列挙可能なプロパティを横断するだけであることに注意してください。また、object.getownPropertyNames()メソッドを使用して、同様の要件を直接達成することもできます。
コードコピーは次のとおりです。
var buz = {
Fog: 'Stack'};
for(buzのvar名){
if(buz.hasownproperty(name)){
alert( "これはfog(" + name + ")確かに。値:" + buz [name]);
}
それ以外 {
アラート(名前);
// toStringか何か他のもの
}}
例4:HasownPropertyメソッドがブロックされる場合があります
オブジェクトに独自のHasownPropertyメソッドがある場合、プロトタイプチェーンの同じ名前の方法が影になります。
コードコピーは次のとおりです。
var foo = {
hasownProperty:function(){
falseを返します。
}、
BAR:「ここにドラゴンになる」}; foo.hasownproperty( 'bar');
//常にfalseを返します
//これについて心配している場合は、プロトタイプチェーンで実際のHasOwnPropertyメソッドを直接使用できます
({})。hasownproperty.call(foo、 'bar');
// 真実
object.prototype.hasownproperty.call(foo、 'bar');
// 真実
上記はこの記事で説明されているすべてのコンテンツです。あなたがそれを気に入っていただければ幸いです。