The hasOwnProperty() method returns a boolean indicating whether the object has the specified property as its own property (as opposed to inheriting it).
const object1 = {};
object1.property1 = 42;
console.log(object1.hasOwnProperty('property1'));
// expected output: true
console.log(object1.hasOwnProperty('toString'));
// expected output: false
//hasOwnPropertydevuelve un valor booleano que indica si el objeto al que está llamando tiene una propiedad con el nombre del argumento. Por ejemplo:
var x = {
y: 10};
console.log(x.hasOwnProperty("y")); //true
console.log(x.hasOwnProperty("z")); //false
// JavaScript does not protect hasOwnProperty method
var foo = {
// overriding foo's default hasOwnProperty method
hasOwnProperty: function() {
return false;
},
bar: 'data'
};
foo.hasOwnProperty('bar'); // false always
// Hence, to prevent this, use Object.prototype.hasOwnProperty as follows-
Object.prototype.hasOwnProperty.call(foo, 'bar'); // true
var x = {
y: 10
};
console.log(x.hasOwnProperty("y")); //true
console.log(x.hasOwnProperty("z")); //false
//
//2021 - Object.hasOwn as a replacement for Object.hasOwnProperty()
//As other answers indicated, hasOwnProperty will check for an object own properties in contrast to in which will also check for inherited properties.
//There is a new alternative method called Object.hasOwn() and is intended to be a replacement for Object.hasOwnProperty()**
const person = { name: 'dan' };
console.log(Object.hasOwn(person, 'name'));// true
console.log(Object.hasOwn(person, 'age'));// false
const person2 = Object.create({gender: 'male'});
console.log(Object.hasOwn(person2, 'gender'));// false
Run code snippet