javascript中hasOwnProperty()方法使用マニュアル

2211 ワード

概要
hasOwnProperty()メソッドは、あるオブジェクトが指定された自身の属性を含むかどうかを判断するために使用されます.
文法obj.hasOwnProperty(prop)
パラメータ
・プロ
•検出する属性名.
説明
Object.prototypeを継承したすべてのオブジェクトは、プロトタイプチェーンからハスOwnPropertyメソッドに継承されます.この方法は、特定の属性を持つオブジェクトかどうかを検出するために使用できます.in演算子とは異なり、プロトタイプチェーンから継承された属性を無視します.

例1:ハスOwnProperty方法を用いて、あるオブジェクトが特定の自身属性を含むかどうかを判断する.
以下の例では、オブジェクトoが自身の属性propを含むかどうかを検出した.
 
  
o = new Object();o.prop = 'exists';function changeO() {
  o.newprop = o.prop;
  delete 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サイクルは列挙可能な属性しかないことに注意してください.
 
  
var buz = {
    fog: 'stack'};
    for (var name in buz) {
    if (buz.hasOwnProperty(name)) {
        alert("this is fog (" + name + ") for sure. Value: " + buz[name]);
    }
    else {
        alert(name);
         // toString or something else   
         }}
例4:ハスOwnProperty方法が遮蔽される可能性がある.
もし相手が自分のhasOwnProperty方法を持っているなら、原型チェーン上の同名の方法は覆い隠されます.
 
  
var foo = {
    hasOwnProperty: function() {
        return false;
    },
    bar: 'Here be dragons'};foo.hasOwnProperty('bar');
    // false
    // , hasOwnProperty
    ({}).hasOwnProperty.call(foo, 'bar');
    // true
    Object.prototype.hasOwnProperty.call(foo, 'bar');
    // true
以上がここで述べた内容の全部です.お好きになってください.