Trusted answers to developer questions
Trusted Answers to Developer Questions

Related Tags

javascript
communitycreator

What is the hasOwnProperty() method in JavaScript?

Programming Bytes

Grokking Modern System Design Interview for Engineers & Managers

Ace your System Design Interview and take your career to the next level. Learn to handle the design of applications like Netflix, Quora, Facebook, Uber, and many more in a 45-min interview. Learn the RESHADED framework for architecting web-scale applications by determining requirements, constraints, and assumptions before diving into a step-by-step design process.

The hasOwnProperty() method returns true if the property is directly present in the object (not in its prototype chain). If an object is an Array, then the hasOwnProperty() method can check if an index is available (not empty) in the array.

let user = {name : "Anitha", age : 25};
console.log("The object is ", user);
console.log("Cheking if name present in user", user.hasOwnProperty('name'));
console.log("Cheking if age present in user", user.hasOwnProperty('age'));
console.log("Cheking if salary present in user", user.hasOwnProperty('salary'));

in vs. hasOwnProperty

The in operator will check if the property is present, either directly in an object or in its prototype chain; whereas, the hasOwnProperty() method only checks if the property is directly present in the object.

let emptyObj = {};
console.log("checking if toString present in emptyObj with 'hasOwnProperty' method");
console.log("emptyObj.hasOwnProperty('toString') => ", emptyObj.hasOwnProperty('toString'));
console.log("\n---------\nchecking if toString present in emptyObj with 'in' method");
console.log("'toString' in emptyObj => ", 'toString' in emptyObj);

When we use a for...in loop, it loops through the object’s direct property and inherited properties. In this case, have used the hasOwnProperty name:

let birds = { wings : true };
let eagle = Object.create(birds);
eagle.canFlyHigh = true;
console.log("the eagle object is ", eagle);
console.log("\n--------\nPrinting property of eagle using for...in ");
for(prop in eagle){
console.log(prop);
}
console.log("\n---------\nPrinting direct property of eagle - for...in and hasOwnProperty ");
for(prop in eagle){
if(birds.hasOwnProperty(prop)) {
console.log(prop);
} else{
// inherited properties
}
}

If the user overrides hasOwnProperty in the object, we can check if the object has a direct property by calling the hasOwnProperty method on an empty object. If this is our object, we need to check whether the property is present or not.

let alwaysFalse = {
name : "test",
hasOwnProperty : ()=> false
};
console.log(alwaysFalse.hasOwnProperty('name'));
// To solve this , we can implement a custom function
function hasOwnProp(object, prop){
return Object.prototype.hasOwnProperty.call(object, prop)
}
console.log(hasOwnProp(alwaysFalse, 'name'));

RELATED TAGS

javascript
communitycreator

Grokking Modern System Design Interview for Engineers & Managers

Ace your System Design Interview and take your career to the next level. Learn to handle the design of applications like Netflix, Quora, Facebook, Uber, and many more in a 45-min interview. Learn the RESHADED framework for architecting web-scale applications by determining requirements, constraints, and assumptions before diving into a step-by-step design process.

Keep Exploring