【问题标题】:Javascript Error object properties [duplicate]Javascript错误对象属性[重复]
【发布时间】:2017-01-16 04:25:11
【问题描述】:

我正在尝试学习 JS 并且对对象属性感到困惑,在下面的示例中,我使用了未定义的函数来生成错误,并且我正在尝试获取错误对象的属性和方法。虽然 e.message 确实打印了错误消息,但我无法将消息作为错误对象属性获取。这里发生了什么?

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); // []
}

【问题讨论】:

  • 我正在使用 repl.it repl.it/FKHn/6
  • 您的意思是您希望message 出现在allKeys 数组中吗?
  • @Xufox 是的,你成功了,非常感谢!

标签: javascript properties ecmascript-6


【解决方案1】:

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"]

}

【讨论】:

    猜你喜欢
    • 2019-11-13
    • 2012-10-17
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    相关资源
    最近更新 更多