Javascript Node.js中的Object.defineProperty

Javascript Node.js中的Object.defineProperty,javascript,ecmascript-6,ecmascript-5,Javascript,Ecmascript 6,Ecmascript 5,我在浏览器控制台中运行以下代码,并在终端中使用node.js v9.11.1: let name = {}; Object.defineProperty(name, 'last', {value: 'Doe'}); console.log(name); 浏览器控制台工作正常,并输出{last:'Doe'}。但是在带有node.js的终端中,它失败并输出一个空白对象,{} 这里可能有什么问题?属性描述符的一个属性是可枚举,它具有默认值false。如果某个属性不可枚举,Node.js会选择不显示该

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

let name = {};
Object.defineProperty(name, 'last', {value: 'Doe'});
console.log(name);
浏览器控制台工作正常,并输出
{last:'Doe'}
。但是在带有
node.js
的终端中,它失败并输出一个空白对象,
{}


这里可能有什么问题?

属性描述符的一个属性是
可枚举
,它具有默认值
false
。如果某个属性不可枚举,Node.js会选择不显示该属性,仅此而已

你可以换个位子试试这个

let name={};
Object.defineProperty(名称“last”{
值:“Doe”,
可枚举:true
});

console.log(名称)
属性描述符的属性之一是
可枚举的
,它具有默认值
false
。如果某个属性不可枚举,Node.js会选择不显示该属性,仅此而已

你可以换个位子试试这个

let name={};
Object.defineProperty(名称“last”{
值:“Doe”,
可枚举:true
});

console.log(名称)当我在谷歌上搜索你的问题标题时发现了这个。谢谢@Chris G。漂亮的指针!当我在谷歌上搜索你的问题标题时发现了这个。谢谢@Chris G。漂亮的指针!我正在打这个,因为答案出来了。对您会注意到,如果您在没有将
enumerable
设置为true的情况下进行repl,您可以
console.log(name.last)
,它将按照节点中的预期输出'Doe'。太棒了!这些都是很好的回答。我的愿望是在我的一个操作中使用带有
扩展运算符的对象,就像
{…name}
一样。因此,
enumerable:true
位将我分类。谢谢你们,福特耶和詹姆斯·勒克莱尔@约翰穆图玛:哦,我正在键入这个,因为答案出来了。对您会注意到,如果您在没有将
enumerable
设置为true的情况下进行repl,您可以
console.log(name.last)
,它将按照节点中的预期输出'Doe'。太棒了!这些都是很好的回答。我的愿望是在我的一个操作中使用带有
扩展运算符的对象,就像
{…name}
一样。因此,
enumerable:true
位将我分类。谢谢你们,福特耶和詹姆斯·勒克莱尔@约翰穆图玛:FWIW,