【问题标题】:Object.defineProperty in Node.jsNode.js 中的 Object.defineProperty
【发布时间】:2018-06-20 14:54:08
【问题描述】:

我在浏览器控制台中运行以下代码,并在终端中使用node.js v9.11.1

let name = {};
Object.defineProperty(name, 'last', {value: 'Doe'});
console.log(name);

浏览器控制台正常工作并输出{ last: 'Doe' }。但是在带有node.js 的终端中,它会失败并输出一个空白对象{}

这可能是什么问题?

【问题讨论】:

标签: javascript ecmascript-6 ecmascript-5


【解决方案1】:

属性描述符的属性之一是enumerable,其默认值为false。如果一个属性是不可枚举的,Node.js 会选择不显示该属性,就是这样。

你可以改变那一点,试试这个

let name = {};
Object.defineProperty(name, 'last', {
  value: 'Doe',
  enumerable: true
});
console.log(name);

【讨论】:

  • 我正在输入这个答案,嘿嘿。是的。你会注意到,如果你在没有将enumerable 设置为true 的情况下进行repl,你可以console.log(name.last),它会在节点中按预期输出'Doe'。
  • 太棒了!这些都是很好的回应。我的愿望是在我的一项操作中使用带有Spread operator 的对象,例如{...name}。所以enumerable: true 位已经把我整理出来了。谢谢@thefourtheye 和@James LeClair!
  • @JohnMutuma: FWIW, ... is not an operator.
猜你喜欢
  • 2011-04-19
  • 1970-01-01
  • 2017-01-01
  • 2013-06-20
  • 2022-12-13
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
  • 2014-02-06
相关资源
最近更新 更多