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...in
konstrukcji / 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 property
jest 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 property
istnieje w łańcuchu prototypów Object, czyli metainformacjach.
Na tej true/false
podstawie 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!