Метод hasOwnProperty - проверяет, принадлежит ли указанное свойство самому объекту или нет.

Перед прочтенем статьи рекомендуется ознакомиться с new, __proto__, prototype.

См. также Object.create, constructor.

Синтаксис

объект.hasOwnProperty('свойство');

Пример

При создании объектов, у них уже есть некоторые свойства (например, toString). Но на самом деле это свойства объекта Object, от которого наследуют объекты. С помощью hasOwnProperty можно узнать действительно ли свойство принадлежит объекту:

var user = {
	value: 10,
}

alert(user.hasOwnProperty('value')); //true;
alert(user.hasOwnProperty('toString')); //false;

Пример

Цикл for..in перебирает все методы и свойства объекта, даже если они находятся не в самом объекте а в прототипе:

var user = {
	sayHi: function(){},
}
var andrey = {
	name: 'Андрей',
	__proto__: user,
}

for (var key in andrey) {
	document.write(key + ' ');
}

Результат выполнения кода:

name sayHi

Пример

Но с помощью hasOwnProperty можно перебирать только те свойства, которые находятся в самом объекте:

var user = {
	sayHi: function(){},
}
var andrey = {
	name: 'Андрей',
	__proto__: user,
}

for (var key in andrey) {
	if (andrey.hasOwnProperty(key)) {
		document.write(key + ' ');
	}
}

Результат выполнения кода:

name