This post explores what are the differences between the in and hasOwn() in Javascript.
Even if they are both used for checking if an object has a given property, the biggest difference between these two is that in will return true for inherited properties, whereas hasown() will return false for inherited properties.
Let's seen an example:
class Human {
name
}
class Employee extends Human {
salary
}
const obj = new Employee()
console.log("salary" in obj) // true
console.log(Object.hasOwn(obj, "salary")) // true
console.log("name" in obj) // true
console.log(Object.hasOwn("name")) // false
A few notes:
- the
hasown()method comes as a replacement for the olderhasOwnProperty(). More details in this StackOverflow thread. - the
inoperator works also to check if private properties are set on a Js object. Of course, this assumes that the check is done inside of the class that contains that private property.
You can find here more details about the hasown() method and here more details about the in operator.
š Build a full trivia game app with LangChain
Learn by doing with this FREE ebook! This 35-page guide walks you through every step of building your first fully functional AI-powered app using JavaScript and LangChain.js
š Build a full trivia game app with LangChain
Learn by doing with this FREE ebook! This 35-page guide walks you through every step of building your first fully functional AI-powered app using JavaScript and LangChain.js