我想向任意JavaScript對象添加元數據的鍵值對。該元數據應該不會影響代碼,不知道元數據的,這意味着,例如有什麼方法可以將元數據添加到JavaScript對象嗎?
JSON.stringify(obj) === JSON.stringify(obj.WithMetaData('key', 'value'))
元數據感知代碼應該能夠通過鍵檢索數據,即
obj.WithMetaData('key', 'value').GetMetaData('key') === 'value'
有什麼辦法做到這一點 - 在node.js?如果是這樣,它是否適用於內置類型,如String
甚至
? (編輯想一想吧,我不在乎真的原始像數字,但有字符串實例會很好)。Number
一些背景:我試圖做的是,從與對象本身的對象派生的緩存值,這樣
- 到元數據不知道代碼,元數據豐富對象將看原來一樣的物體W/O需要導出的值可以把它弄出來的元數據,如果已經緩存
- 緩存會得到垃圾回收旁邊的對象元
- 代碼
另一種方法是將哈希表與某處的緩存進行存儲,但是永遠不會知道何時該對象被垃圾收集。每個對象實例都必須手工處理,以便緩存不會泄漏。
(順便說一句的Clojure具有這樣的特徵:http://clojure.org/metadata)
這聽起來就像'jQuery.data()'功能對我來說 – 2012-07-31 13:16:24