Oto krótka i precyzyjna odpowiedź:
W JavaScript każdy obiekt ma kilka wbudowanych par klucz-wartość, które zawierają metainformacje o obiekcie. Kiedy przeglądasz wszystkie pary klucz-wartość za pomocą for...inkonstrukcji / pętli dla obiektu, również przechodzisz przez te pary klucz-wartość metainformacji (których zdecydowanie nie chcesz).

Używając hasOwnPropery(property) filtrów eliminuj te niepotrzebne pętle przez metainformacje i bezpośrednio sprawdza, czy parametr propertyjest właściwością podaną przez użytkownika w obiekcie, czy nie. Przez filtrowanie mam na myśli to, że hasOwnProperty(property)nie wygląda na to, że propertyistnieje w łańcuchu prototypów Object, czyli metainformacjach.
Na tej true/falsepodstawie zwraca wartość logiczną .
Oto przykład:
var fruitObject = {"name": "Apple", "shape": "round", "taste": "sweet"};
console.log(fruitObject.hasOwnProperty("name"));
console.log(Object.prototype.hasOwnProperty("toString");)
Mam nadzieję, że to jasne!