Ось коротка і точна відповідь:
У JavaScript кожен об'єкт має купу вбудованих пар ключ-значення, які містять метаінформацію про об'єкт. Коли ви прокручуєте всі пари ключ-значення, використовуючи for...in
конструкцію / цикл для об'єкта, ви також переглядаєте ці пари мета-інформація ключ-значення (чого ви точно не хочете).
Використовуючи hasOwnPropery(property)
фільтри, ці непотрібні цикли перебирають метаінформацію та безпосередньо перевіряють, є параметр property
властивістю користувача в об’єкті чи ні. Під фільтрацією , я маю на увазі, що hasOwnProperty(property)
не виглядає, чи property
існує в ланцюжку прототипів об'єкта, яка також є метаінформацією.
Він повертає логічне значення true/false
на основі цього.
Ось приклад:
var fruitObject = {"name": "Apple", "shape": "round", "taste": "sweet"};
console.log(fruitObject.hasOwnProperty("name"));
console.log(Object.prototype.hasOwnProperty("toString");)
Сподіваюся, це зрозуміло!