Javascript 错误对象属性

标签 javascript properties ecmascript-6

<分区>

我正在尝试学习 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); // []
}

最佳答案

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

}

关于Javascript 错误对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41669426/

相关文章:

javascript - React Native 上的 git clone 错误如何解决这个问题

ios - 对象类型 "id"的属性

c# - 公开 protected 字段的最佳方式

jsf - 如何获取 JSF 类中资源的句柄?

arrays - 在 react 中映射对象键并返回子属性

javascript - 类似于 typescript 中的字符串枚举类型

javascript - 多个 OR 字符串

javascript - 如何将范围值传递给 &lt;input&gt; 元素 `value` 属性

javascript - react 通量 Action 并存储类依赖关系

javascript - 如何使用 ES6 语法从库模块构造新类?