revision:
The propertyIsEnumerable() method returns a boolean indicating whether the specified property is the object's enumerable own property..
propertyIsEnumerable(prop)
Parameters:
prop : required. The name of the property to test. Can be a string or a Symbol.
const object1 = {}; const array1 = []; object1.property1 = 42; array1[0] = 42; console.log(object1.propertyIsEnumerable('property1')); // Expected output: true console.log(array1.propertyIsEnumerable(0)); // Expected output: true console.log(array1.propertyIsEnumerable('length')); // Expected output: false
<div> <p id="prop-1"></p> <p id="prop-2"></p> </div> <script> const o = {}; const a = []; o.prop = "is enumerable"; a[0] = "is enumerable"; o.propertyIsEnumerable("prop"); // true a.propertyIsEnumerable(0); // true document.getElementById("prop-1").innerHTML = " is enumerable ? : " + o.propertyIsEnumerable("prop"); document.getElementById("prop-2").innerHTML = " is enumerable ? : " + a.propertyIsEnumerable(0); </script>
<div> <p id="prop-3"></p> <p id="prop-4"></p> <p id="prop-5"></p> <p id="prop-6"></p> </div> <script> const aa = ["is enumerable"]; aa.propertyIsEnumerable(0); // true aa.propertyIsEnumerable("length"); // false document.getElementById("prop-3").innerHTML = " is enumerable ? : " + aa.propertyIsEnumerable(0); document.getElementById("prop-4").innerHTML = " is enumerable ? : " + aa.propertyIsEnumerable("length"); Math.propertyIsEnumerable("random"); // false globalThis.propertyIsEnumerable("Math"); // false document.getElementById("prop-5").innerHTML = " is enumerable ? : " + Math.propertyIsEnumerable("random"); document.getElementById("prop-6").innerHTML = " is enumerable ? : " + globalThis.propertyIsEnumerable("Math"); </script>
<div> <p id="prop-7"></p> <p id="prop-8"></p> <p id="prop-9"></p> <p id="prop-10"></p> </div> <script> const o1 = { enumerableInherited: "is enumerable", }; Object.defineProperty(o1, "nonEnumerableInherited", { value: "is non-enumerable", enumerable: false, }); const o2 = { // o1 is the prototype of o2 __proto__: o1, enumerableOwn: "is enumerable", }; Object.defineProperty(o2, "nonEnumerableOwn", { value: "is non-enumerable", enumerable: false, }); o2.propertyIsEnumerable("enumerableInherited"); // false document.getElementById("prop-7").innerHTML = " is enumerable ? : " + o2.propertyIsEnumerable("enumerableInherited"); o2.propertyIsEnumerable("nonEnumerableInherited"); // false document.getElementById("prop-8").innerHTML = " is enumerable ? : " + o2.propertyIsEnumerable("nonEnumerableInherited"); o2.propertyIsEnumerable("enumerableOwn"); // true document.getElementById("prop-9").innerHTML = " is enumerable ? : " + o2.propertyIsEnumerable("enumerableOwn"); o2.propertyIsEnumerable("nonEnumerableOwn"); // false document.getElementById("prop-10").innerHTML = " is enumerable ? : " + o2.propertyIsEnumerable("nonEnumerableOwn"); </script>