2017-01-16 7 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

Спасибо за быстрый ответ, я поднял ваш ответ, это не считается :) –

 Смежные вопросы

  • Нет связанных вопросов^_^