Метод hasOwnProperty() в JavaScript в этой статье. Метод hasOwnProperty() проверяет, принадлежит ли свойство объекта указанному объекту. Если свойство принадлежит именованному объекту, оно возвращает true иначе false.

Член объекта наследует hasOwnProperty() . Эта функция используется, чтобы выяснить, имеет ли объект именованное свойство, которое напрямую связано с объектом.

Синтаксис hasOwnProperty() в JavaScript

obj.hasOwnProperty(property)

properties : Передайте имя строки или символов, чтобы проверить, принадлежит ли она объекту.

Вот самые важные вещи, на которые следует обратить внимание: hasOwnProperty вернет true, даже если вы установите значение null или неопределенное.

let a = new Object();
a.propertyOne = null;
a.hasOwnProperty('propertyOne')
// output: true 

a.propertyTwo = undefined;
a.hasOwnProperty('propertyTwo')
// output: true

Используйте hasOwnProperty(), чтобы проверить, существует ли свойство объекта:

var movie = {
  name: 'avenger endgame',
  genre: 'super hit',
}
var song = {
  name: 'Robert Downey Jr',
}
movie.hasOwnProperty('name');  // returns true
movie.hasOwnProperty('type');   // returns false
song.hasOwnProperty('name');  // returns true
song.hasOwnProperty('status'); // returns false

Основное преимущество метода JavaScript hasOwnProperty(): его можно инициализировать для любого объекта, просто приняв строку в качестве аргумента. Он быстро возвращает true, если значение доступно для объекта, в противном случае возвращает false.

function Car(name) {
  this.name = name;
}
Car.prototype.color = 'red';
const bmw = new Car('x1');
console.log(bmw.name); 
// property found on object
console.log(bmw.color); 
// color property found on prototype
console.log(bmw.hasOwnProperty('name')); 
// name is found on the object itself
console.log(bmw.hasOwnProperty('color')); 
// color property is not found on the object itself

В приведенном выше примере создается новый объект Car. Каждый автомобиль инициализируется в конструкторе своим именем. Однако цвет не упоминается в начале объекта. Однако доступно в иерархии выполнения прототипа, поэтому hasOwnProperty() возвращает true для имени, но false для цвета.

hasOwnProperty() Прекрасно работает при переборе объекта. Теперь вы можете легко увидеть, принадлежат ли свойства объекта объекту, а не прототипу.

// declaring a Car function
function Car(name) {
  this.name = name;
}
// setting up new prop with protoype 
Car.prototype.color = 'red';
// creating a new Car object
const BMW = new Car('x1');
// looping through every car prop including prototype as well
for (let car in BMW) {
  car + ':', BMW[car];
}
/* 
   outupt: name: x1
   outupt: color: red
*/

/**************************************/
/*will loop through only self properties of the object, 
excludes property generated through prototype method */
for (let car in BMW) {
    if(BMW.hasOwnProperty(car)){
      console.log(car + ':', BMW[car]);
    } 
}
// output: name:

Я с нетерпением жду возможности поделиться вашими добрыми мыслями по поводу этой статьи.