2017-08-30 22 views
2

Gibt es eine Möglichkeit, alle Eigenschaften eines Objekts aufzulisten (was auch eine Funktion sein kann), einschließlich nicht aufzählbarer Objekte, aber ohne Object.getOwnPropertyNames oder andere Methoden von Object zu verwenden?JavaScript - Wie listet man Eigenschaften eines Objekts auf?

So zum Beispiel, ich brauche alle Eigenschaften des nativen String Konstruktor zu bekommen (fromCharCode, fromCodePoint, raw, etc), aber ich bin nicht native Funktion von Object genannt getOwnPropertyNames zu nutzen. Gibt es einen Weg, das zu erreichen?

Ich habe versucht for..in und for..of Schleifen, aber nicht alle Eigenschaften aufgeführt. Auch habe ich versucht Object.keys, aber wieder sind nicht alle Eigenschaften aufgeführt. sein auch deutlich zu machen, was ich fragen: Folgendes ist nicht erlaubt:

var a = Object.getOwnPropertyNames.bind(Object); 
console.log(a(String)); 

ich dies frage, weil ich einige Spiel ich spiele (genannt ElevatorJS), in dem ein Benutzer ein JavaScript-Programm schreibt die sollte etwas in eingeschränkten Bedingungen erreichen. In dieser speziellen Bedingung wird die Methode getOwnPropertyNames überschrieben und ist gleich null, daher dürfen wir sie nicht verwenden. Aber es stellte sich heraus, dass sie eine nicht aufzählbare Eigenschaft innerhalb des Konstruktors String als Eigenschaft versteckt haben, also muss ich irgendwie darauf zugreifen. Sie haben auch andere Methoden von Object überschrieben (wie entries, getOwnPropertyDescriptors, usw.).

Gibt es eine Möglichkeit, das zu erreichen? Vielen Dank im Voraus.

Antwort

1

Sie können Reflect.ownKeys(String) verwenden, die Ihnen alle Besitzer des Arguments gibt.

+0

Also im Grunde, anstatt magische Funktion A, verwenden Sie magische Funktion B stattdessen;) –

+0

@FelixKling: Heh, ja ziemlich viel. : D – spanky

Verwandte Themen