【问题标题】:javascript make getters visible via console.logjavascript 通过 console.log 使 getter 可见
【发布时间】:2018-06-12 20:55:51
【问题描述】:

如何让console.log()显示所有getter属性?现在,这会打印出{},并带有一个打开它的箭头:

我希望它在控制台中这样打印:{ foo: 1 }

var obj = {};

Object.defineProperty(obj, 'foo', {
  enumerable: true,
  get: function(){
    return 1
  }
});

console.log(obj) // this outputs empty object {}, i want it to output { foo: 1 }

【问题讨论】:

  • 即使有可能,直接更改console.log() 也可能是个坏主意。调用 getter 可能期望调用者使用返回/创建的值执行某些任务。因此,如果您将这样的功能直接添加到 console.log,那么您可能会意外破坏某些程序逻辑。
  • console.log 未标准化。不同的浏览器使用不同的规则来打印对象。这似乎是不必要的努力。

标签: javascript ecmascript-6 getter


【解决方案1】:

您正在搜索的似乎是JSON.stringify(),它创建了一个 JSON 格式的字符串。

var obj = {};

Object.defineProperty(obj, 'foo', {
  enumerable: true,
  get: function() {
    return 1
  }
});

console.log(JSON.stringify(obj));

【讨论】:

  • 可以不使用 JSON.stringify() 吗?
  • 如果您只想打印对象本身,console.log() 是这样做的方法,但输出取决于您使用的控制台。例如,Chrome 显示 {} 左侧有一个向下的小箭头,单击该箭头会显示所有其他明显的、自定义和隐藏的属性,例如原型等
猜你喜欢
  • 1970-01-01
  • 2014-11-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-24
  • 1970-01-01
  • 2010-11-07
  • 2022-07-15
  • 1970-01-01
相关资源
最近更新 更多