Często uzyskuje się ten sam wynik z lub bez hasOwnProperty
, ale drugi ignoruje właściwości, które są dziedziczone, a nie żyją bezpośrednio na danym obiekcie.
Rozważmy ten podstawowy system dziedziczenia. Psy dziedziczą po mistrzowskiej klasie Animal.
function Animal(params) { this.is_animal = true; }
function Dog(params) { for (var i in params) this[i] = params[i]; }
Dog.prototype = new Animal();
var fido = new Dog({name: 'Fido'});
Jeśli zajrzeć do fido
, hasOwnProperty
pomaga nam ustalić, które mają swoje własne właściwości (nazwa) i które są dziedziczone.
for (var i in fido) if (fido.hasOwnProperty(i)) alert(i+' = '+fido[i]);
... alarmuje name=Fido
ale nie is_animal=true
.
sprawdź to skrzypce http://jsfiddle.net/gFmXM/1/ – goat
@ rambocoder-Dzięki, teraz dostaję je –