Tôi muốn thêm cặp khóa-giá trị siêu dữ liệu vào các đối tượng JavaScript tùy ý. Siêu dữ liệu này không ảnh hưởng đến mã mà không nhận thức được các siêu dữ liệu, có nghĩa là ví dụCó cách nào để thêm siêu dữ liệu vào các đối tượng JavaScript không?
JSON.stringify(obj) === JSON.stringify(obj.WithMetaData('key', 'value'))
MetaData đang nhận thức được sẽ có thể lấy dữ liệu theo mã, tức là
obj.WithMetaData('key', 'value').GetMetaData('key') === 'value'
Có cách nào để làm điều đó - trong node.js? Nếu vậy, nó có hoạt động với các loại nội trang dựng sẵn như String
và thậm chí
? (Chỉnh sửa Suy nghĩ về điều đó, tôi không quan tâm về số thực nguyên thủy giống như số, nhưng việc đó cho các trường hợp chuỗi sẽ tốt hơn).Number
Một số Bối cảnh: Những gì tôi đang cố gắng làm là giá trị bộ nhớ cache mà có nguồn gốc từ một đối tượng với các đối tượng chính nó, do đó
- dữ liệu meta đang không biết, các dữ liệu meta đối tượng phong phú sẽ trông giống như đối tượng gốc w/o meta đang
- mà cần các giá trị có nguồn gốc có thể lấy nó ra khỏi meta-data nếu đã lưu trữ
- bộ nhớ cache sẽ được thu gom rác thải cùng với các đối tượng
Một cách khác là lưu trữ một bảng băm với bộ đệm ở đâu đó, nhưng bạn sẽ không bao giờ biết khi nào đối tượng bị thu gom rác. Mỗi thể hiện đối tượng sẽ phải được xử lý thủ công, để các cache không bị rò rỉ.
(btw clojure có tính năng này: http://clojure.org/metadata)
âm thanh này giống như chức năng 'jQuery.data()' với tôi –