Wie weit zurück müssen Sie in der Browserkompatibilität gehen? Alle modernen Browser sollten unterstützen. In Ihrem Beispiel gibt Object.getOwnPropertyNames([])
["length"]
zurück.
Mehr Infos hier: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames
Edit: Weitere Beispiele:
Object.getOwnPropertyNames([1, 2, 3]);
kehrt ["0", "1", "2", "length"]
Object.getOwnPropertyNames(String);
kehrt ["prototype", "quote", "substring", "toLowerCase", "toUpperCase", "charAt", "charCodeAt", "contains", "indexOf", "lastIndexOf", "startsWith", "endsWith", "trim", "trimLeft", "trimRight", "toLocaleLowerCase", "toLocaleUpperCase", "localeCompare", "match", "search", "replace", "split", "substr", "concat", "slice", "fromCharCode", "length", "name", "arguments", "caller"]
Bearbeiten # 2: Okay, so dass Sie eine vollständige Liste der Eigenschaften und Methoden suchen, einschließlich der geerbten, habe ich von zwei anderen SO Fragen ausgeliehen (unten verlinkt) und eine Lösung, die erscheint erhalten Sie noch näher:
var findProperties = function(obj) {
var aPropertiesAndMethods = [];
do {
aPropertiesAndMethods = aPropertiesAndMethods.concat(Object.getOwnPropertyNames(obj));
} while (obj = Object.getPrototypeOf(obj));
for (var a = 0; a < aPropertiesAndMethods.length; ++a) {
for (var b = a + 1; b < aPropertiesAndMethods.length; ++b) {
if (aPropertiesAndMethods[a] === aPropertiesAndMethods[b]) {
aPropertiesAndMethods.splice(a--, 1);
}
}
}
return aPropertiesAndMethods;
}
, wenn Sie also findProperties([])
nennen verwenden, gibt sie ["length", "join", "reverse", "sort", "push", "pop", "shift", "unshift", "splice", "concat", "slice", "lastIndexOf", "indexOf", "forEach", "map", "reduce", "reduceRight", "filter", "some", "every", "iterator", "constructor", "toSource", "toString", "toLocaleString", "valueOf", "watch", "unwatch", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "__defineGetter__", "__defineSetter__", "__lookupGetter__", "__lookupSetter__"]
verlinkte Fragen
How to merge two arrays in Javascript and de-duplicate items
Sie können FYI Tabulatorvervollständigung in der REPL verwenden und es funktioniert ziemlich gut die meisten Dinge zu sehen, aber eine vollständige Antwort auf Ihre Frage ist ziemlich kompliziert. Meistens kann man erreichen, was man will, aber es erfordert eine ziemlich große Trickkiste. 'util.inspect' und' console.log' in Node sind auch praktisch, und ich habe meine eigene 'util.inspect'-Implementierung an einem Punkt geschrieben, den ich posten werde, sobald ich es gefunden habe, wenn eine Antwort bis dahin nicht akzeptiert wurde. –