Ultimate Parents of Prototypes Question

I have a question about the properties of the “ultimate parent” of prototypes.
(e.g. Array.prototype, Object.prototype, Function.prototype etc.)

I was trying to figure out which properties these prototypes hold. I knew that arrays held a property of “length” and confirmed this via the following:
console.log("This is hasOwnProperty -- " + Array.prototype.hasOwnProperty('length')); //true

It of course also stands that an array must also have the property of hasOwnProperty()

However, when trying to create a list of all the properties, it did not work. I tried to create this list via the following:
let objectArr = []; for (let property in Array.prototype) { objectArr.push(property); }; console.log(objectArr);

This only return a set of empty brackets. Any help on how to access a complete list of the properties on the ultimate parent prototypes?

Hello and welcome to the forum :slight_smile:!

That’s because the for...in loop cannot access the non enumerable properties of an object, in this case Array (or the prototype).

You could use Object.getOwnPropertyNames(Array),



Thank you! How would you pull in the ones that are not the objects “own” properties?

You mean, including the parents? If so, then You would need to create a function to do something like this:

let count = 0
let obj = Array
let result = []

while (obj.prototype && count < 1000) {
  obj = obj.prototype
  count++ // Just in case xD

// Expected result:
// [ 
//   'length',
//   'constructor',
//   'concat',
//   'copyWithin',
//   'fill',
//   'find',
//   'findIndex',
//   'pop',
//   'push',
//   'reverse',
//   'shift',
//   'unshift',
//   'slice',
//   'sort',
//   'splice',
//   'includes',
//   'indexOf',
//   'keys',
//   'entries',
//   'forEach',
//   'filter',
//   'map',
//   'every',
//   'some',
//   'reduce',
//   'reduceRight',
//   'toString',
//   'toLocaleString',
//   'join',
//   'lastIndexOf',
//   'values',
//   'flat',
//   'flatMap'
// ]