We're looking for a user researcher to understand the needs of developers and designers. Is this you or someone you know? Check out the post: https://mzl.la/2IGzdXS





  • obj : Object オブジェクト
  • prop : 調べるプロパティ名


Object の子孫にあたるあらゆるオブジェクトは hasOwnProperty メソッドを継承しています。このメソッドはあるオブジェクトが指定されたプロパティを、そのオブジェクトの直接のプロパティとして持っているかどうかを特定するのに使うことができます。in 演算子と違って、このメソッドはオブジェクトのプロトタイプチェーンをたどってチェックしません。

例: hasOwnProperty を使ってプロパティの存在を調べる

オブジェクト oprop という名前のプロパティを含んでいるかどうかを特定する例を以下に示します。

var o = new Object();
o.prop = 'exists';

alert( o.hasOwnProperty('prop') ); // true

// [プロパティ名を変更する関数] : 指定オブジェクトの特定のプロパティの値を新しいプロパティに移し元のプロパティを削除
function changePropName(obj, propNameStr, newPropNameStr) {
  o[newPropNameStr] = o[propNameStr];
  delete o[propNameStr];

changePropName(o, "prop", "newProp"); // 関数を実行
alert( o.hasOwnProperty('prop') );    // false (※ prop プロパティは既に newProp プロパティに書き換わっている)

例: 直接のプロパティと継承されたプロパティ


var o = new Object();

o.prop = 'exists';
o.hasOwnProperty('prop');             // true を返す
o.hasOwnProperty('toString');         // false を返す
o.hasOwnProperty('hasOwnProperty');   // false を返す

例: オブジェクトのプロパティの反復処理

The following example shows how to iterate over the properties of an object without executing on inherit properties. Note that the for..in loop is already only iterating enumerable items, so one should not assume based on the lack of non-enumerable properties shown in the loop that hasOwnProperty itself is confined strictly to enumerable items (as with getOwnPropertyNames).

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



このページの貢献者: mushahiroyuki, teoli, ethertank, kakakakakku, Mgjbot, Yuichirou, Potappo
最終更新者: mushahiroyuki,