我想将元数据的键值对添加到任意 JavaScript 对象。此元数据不应影响不知道元数据的代码,这意味着例如
JSON.stringify(obj) === JSON.stringify(obj.WithMetaData('key', 'value'))
元数据感知代码应该能够按键检索数据,即
obj.WithMetaData('key', 'value').GetMetaData('key') === 'value'
有没有办法做到这一点 - 在 node.js 中?如果是这样,它是否适用于内置类型,例如String
and?(编辑考虑一下,我不关心像数字这样的真正的原语,但是对于字符串实例来说会很好)。Number
一些背景:我正在尝试做的是缓存从对象派生的值与对象本身,以便
- 对于元数据不知道的代码,元数据丰富的对象将看起来与没有元数据的原始对象相同
- 如果已经缓存,需要派生值的代码可以将其从元数据中取出
- 缓存将与对象一起收集垃圾
另一种方法是在某处存储带有缓存的哈希表,但您永远不知道对象何时被垃圾收集。每个对象实例都必须手动处理,以免缓存泄漏。
(顺便说一句,clojure 有这个功能:http ://clojure.org/metadata )