javascript - 如何将一个对象的 getter 绑定到另一个对象?
问题描述
假设你有let a = { b: { c: 1 } }
并且const getters = { get c() { return this.b.c } }
你传播getters
到a
like a = { ...a, ...getters }
。getters.c
必然是错的this
。您如何将方法绑定getters
到a
而不必bind
为每个方法编写(假设getters
将来会有更多的 getter 方法)。
解决方案
使用扩展语法将调用getter:
const obj = {
get prop() {
console.log('getter invoked');
}
};
const obj2 = { ...obj };
它实际上不会复制吸气剂,所以这不是你应该使用的。用 迭代 getter-object 的键和 getter 函数Object.getOwnPropertyDescriptors
,然后使用Object.defineProperty
将 getter 放在a
对象上:
let a = {
b: {
c: 1
}
};
const getters = {
get c() {
return this.b.c
}
};
Object.entries(Object.getOwnPropertyDescriptors(getters)).forEach(([key, { get }]) => {
Object.defineProperty(a, key, { get });
});
console.log(a.c);
推荐阅读
- angular - 如何对角度动态表中的行进行分组?
- google-colaboratory - 在 mnsit 数据集上应用 torchvision.transforms 后,如何使用 cv2_imshow 进行查看?
- python-3.x - 在python中删除复数
- laravel - 离开文本字段后 Laravel livewire 元素给出错误 419
- mongodb - Mongo DB - UpdateMany 列数据
- python - tensorflow 2.x 可以在最新的 Python 上运行吗?
- pine-script - strategy.entry() 没有在应该开仓的时候开仓
- ansible - 使用 Ansible 的日期时差
- ios - 如何防止 Chrome-in-iOS 上的双击放大
- java - 抽象类中的抽象属性