2017-01-16 49 views
2

我想學習JS,並且對下面的例子中的對象屬性感到困惑我已經使用了一個未定義的函數來生成一個錯誤,我試圖獲取錯誤對象的屬性和方法。雖然e.message確實打印錯誤消息,但我無法將消息作爲錯誤對象屬性獲取。這裏發生了什麼?Javascript錯誤對象的屬性

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

我使用repl.it https://repl.it/FKHn/6 –

+0

你的意思是你期待'message'發生在'allKeys'數組? – Xufox

+0

@Xufox是的,你釘了它,非常感謝! –

回答

0

message,根本就不是一個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

感謝您的快速回答,我確實收到了您的回答,並沒有被計算在內:) –