我正在尝试使用以下Javascript代码,涉及到Object.defineProperty()
的了解,并且我遇到了一个奇怪的问题。当我在浏览器或VS代码中尝试执行以下代码时,输出结果与预期不符,但是如果我尝试调试代码,则输出结果是正确的。
当我调试代码并评估配置文件时,我可以看到对象中的name和age
属性。但在输出时,它只显示name
属性。
//Code Snippet
let profile = {
name: 'Barry Allen',
}
// I added a new property in the profile object.
Object.defineProperty(profile, 'age', {
value: 23,
writable: true
})
console.log(profile)
console.log(profile.age)
现在这里期望的输出应该是
{name: "Barry Allen", age: 23}
23
但是我得到的输出是这样的。
请注意,我能够访问后面定义的age
属性。
我不确定为什么console.log()
会表现出这种方式。
{name: "Barry Allen"}
23
age
设置enumerable
为true,但它仍然被显示出来。 - randomJSON.stringify
,它将表现一致,并且省略非“可枚举”的属性。 - Mike Caron