hasOwnProperty vs propertyIsEnumerable

Может ли кто-нибудь просветить меня, в чем разница между hasOwnProperty и propertyIsEnumerable:

function f(){
  this.a = 1;
  this.b = 2;
  this.c = function(){}
}
f.prototype = {
  d : 3,
  e : 4,
  g : function(){}
}

создание экземпляра объекта:

var o = new f();

И здесь я не вижу разницы. На мой взгляд, они делают одно и то же

o.hasOwnProperty('a'); //true
o.hasOwnProperty('b'); //true
o.hasOwnProperty('c'); //true
o.hasOwnProperty('d'); //false
o.hasOwnProperty('e'); //false
o.hasOwnProperty('g'); //false

o.propertyIsEnumerable('a'); //true
o.propertyIsEnumerable('b'); //true
o.propertyIsEnumerable('c'); //true
o.propertyIsEnumerable('d'); //false
o.propertyIsEnumerable('e'); //false
o.propertyIsEnumerable('g'); //false

Поправьте меня, если я ошибаюсь

20
задан Salvador Dali 10 June 2012 в 13:08
поделиться