2017-01-16 3 views
2

Ich versuche JS zu lernen und bin über Objekteigenschaften verwirrt, im Beispiel unten habe ich eine undefinierte Funktion verwendet, um einen Fehler zu generieren, und ich versuche, Eigenschaften und Methoden des Fehlerobjekts zu erhalten. Während e.message die Fehlermeldung ausgibt, kann ich keine Nachricht als Fehlerobjekteigenschaft abrufen. Was passiert hier?Javascript Fehler Objekteigenschaften

try{ 
    unknownFunction();// undefined function here 
}catch(e){ 
    console.log(e); // it is ReferenceError 
    console.log(e.message);//message 
    console.log(typeof e); // object 
    console.log(e instanceof ReferenceError); // true 
    console.log(e === ReferenceError); // false 
    for(var propertyName in e) { 
    console.log("Name "+propertyName+" and Value "+e[propertyName]); 
    } // [] 
    let allKeys = Object.keys(e); 
    console.log(allKeys);// [] 
    let fnKeys = allKeys.filter(key => typeof myObj[key] == 'function'); 
    console.log(fnKeys); // [] 
} 
+0

ich verwende repl.it https://repl.it/FKHn/6 –

+0

Haben Sie bedeuten, dass Sie erwarten 'message' in auftreten das 'allKeys' Array? – Xufox

+0

@Xufox ja du hast es geschafft, vielen Dank! –

Antwort

0

message ist einfach keine enumerable property:

try{ 
    unknownFunction();// undefined function here 
}catch(e){ 
    console.log(Object.getOwnPropertyDescriptor(e, 'message')) 
    /* { 
     value: "unknownFunction is not defined", 
     writable: true, 
     enumerable: false, 
     configurable: true 
    } */ 

    let allKeys = Object.getOwnPropertyNames(e); 
    console.log(allKeys); 
    // ["stack","message"] 

} 
+0

Danke für die schnelle Antwort, ich habe deine Antwort verbessert, weil sie nicht gezählt wird :) –

Verwandte Themen