revision:
The Object.hasOwn() static method returns true if the specified object has the indicated property as its own property. If the property is inherited, or does not exist, the method returns false.
Object.hasOwn(obj, prop)
Parameters:
obj : required. The JavaScript object instance to test.
prop : required. The String name or Symbol of the property to test.
const object1 = { prop: 'exists' }; console.log(Object.hasOwn(object1, 'prop')); // Expected output: true console.log(Object.hasOwn(object1, 'toString')); // Expected output: false console.log(Object.hasOwn(object1, 'undeclaredPropertyValue')); // Expected output: false
<div> <p id="has-1"></p> <p id="has-2"></p> <p id="has-3"></p> <p id="has-4"></p> </div> <script> const example = {}; Object.hasOwn(example, "prop"); // false - 'prop' has not been defined document.getElementById("has-1").innerHTML = "has own property ? : " + Object.hasOwn(example, "prop"); example.prop = "exists"; Object.hasOwn(example, "prop"); // true - 'prop' has been defined document.getElementById("has-2").innerHTML = "has own property ? : " + Object.hasOwn(example, "prop"); example.prop = null; Object.hasOwn(example, "prop"); // true - own property exists with value of null document.getElementById("has-3").innerHTML = "has own property ? : " + Object.hasOwn(example, "prop"); example.prop = undefined; Object.hasOwn(example, "prop"); // true - own property exists with value of undefined document.getElementById("has-4").innerHTML = "has own property ? : " + Object.hasOwn(example, "prop"); </script>
<div> <p id="has-5"></p> <p id="has-6"></p> <p id="has-7"></p> <p id="has-8"></p> </div> <script> const example1 = {}; example1.prop = "exists"; // `hasOwn` will only return true for direct properties: Object.hasOwn(example1, "prop"); // true Object.hasOwn(example1, "toString"); // false Object.hasOwn(example1, "hasOwnProperty"); // false document.getElementById("has-5").innerHTML = "has own property ? : " + Object.hasOwn(example1, "prop"); document.getElementById("has-6").innerHTML = "has own property ? : " + Object.hasOwn(example1, "toString"); document.getElementById("has-7").innerHTML = "has own property ? : " + Object.hasOwn(example1, "hasOwnProperty"); </script>
<div> <p id="has-9"></p> <p id="has-10"></p> <p id="has-11"></p> <p id="has-12"></p> <p id="has-13"></p> <p id="has-14"></p> </div> <script> const person = { name: 'John' }; console.log(Object.hasOwn(person, 'name'));// true document.getElementById('has-9').innerHTML = " has property 'name' : " + Object.hasOwn(person, 'name') console.log(Object.hasOwn(person, 'age'));// false document.getElementById('has-10').innerHTML = " has property 'age' : " + Object.hasOwn(person, 'age') console.log(person.hasOwnProperty('name'));// true document.getElementById('has-11').innerHTML = " has own property 'name' : " + Object.hasOwnProperty('name') console.log(person.hasOwnProperty('age'));// false document.getElementById('has-12').innerHTML = " has own property 'age' : " + Object.hasOwnProperty('age') const person2 = Object.create({gender: 'male'}); console.log(Object.hasOwn(person2, 'gender')); // false document.getElementById('has-13').innerHTML = " has property 'gender' : " + Object.hasOwn(person2, 'gender') console.log(person.hasOwnProperty('gender')); //false // gender is not an own property of person, it exist on the person2 prototype document.getElementById('has-14').innerHTML = " has own property 'gender' : " + Object.hasOwnProperty('gender') </script>