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,