javascript - Javascript:无法打印由 Object.defineProperty 定义的对象属性
问题描述
我使用Object.defineProperty
方法来定义对象的属性:
const o = { a: 1 }
Object.defineProperty(o, 'b', {
get() {
return this.a
}, set(value) {
this.a = value
}
})
但是,当我使用console.log
try to print objecto
时,该b
属性似乎不在其中。
但是当我尝试使用o.b
它来访问它时,它可以返回正确的值
所以我很困惑:为什么属性不能打印但可以访问?
解决方案
添加的属性.defineProperty()
默认为non-enumerable。
通过设置使它们“可见”enumerable: true
var foo = {}
Object.defineProperty(foo, "a", {
get() { return "a"; }
});
Object.defineProperty(foo, "b", {
get() { return "b"; },
enumerable: true
});
console.log(Object.keys(foo));
推荐阅读
- splunk - 如何在 Splunk 中聚合或连接两个 JSON 数据集?
- django - 在 django 的同一模型上保存两个实例
- python - 如何在 VS 代码中为笔记本和 python 脚本设置不同的主题
- java - Android 如何从第二个活动布局设置按钮单击操作
- c# - 从包含冒号 (:) 的查询参数名称中读取值
- c# - 如何从我在文本框 C# selenium 中提供的列表中按从头到尾的顺序选择一个值
- react-native - HMS 地理围栏未触发事件
- python - 从 Python 日期时间字段获取 Excel 中的准确日期格式
- html - jQuery父选择器不适用于两组div
- c# - TabControl - 切换选项卡时将 UserControl TabItems 保留在内存中