Prototype-chain klas i konstruktorów

0

Cześć.

Chciałem sobie posprawdzać co z czego dziedziczy w node.js
Znam __proto__ i hasOwnProperty() i zrobiłem coś takiego:

import * as fs from 'fs';

const obj = fs.ReadStream.__proto__.__proto__.__proto__
for (let property in obj) {
    if (obj.hasOwnProperty(property)) {
        console.log(property)
    }
}

Tylko że nie wiem jak sprawdzić jak się nazywa klasa lub konstruktor który ma ten obiekt jako .prototype
W tym przypadku powyżej domyślam się że to EventEmitter ale nie mam pewności.
Czy jest jakaś funkcja która wypluje mi tablicę ze wszystkimi następnymi konstruktorami w prototype chain?

2

Nie wiem, czy istnieje wbudowana funkcja do tego, ale możemy sami ją stworzyć korzystając z __proto__.constructor.name.

const getAllConstructorNames = (item, names = []) => {
    if (item.__proto__) {
        names.push(item.__proto__.constructor.name)
    
        return getAllConstructorNames(item.__proto__, names)    
    }

    return names;
}

console.log(getAllConstructorNames(localStorage)); // ['Storage', 'Object']

1 użytkowników online, w tym zalogowanych: 0, gości: 1