admin管理员组文章数量:1415137
Is it possible to add metadata to JavaScript objects (including strings, numbers and functions)? That is,
double = function(a){ return a*2; };
addMetadata(double,{desc:"Returns the double of a number."});
getMetadata(double).desc;
How could addMetadata and getMetadata be implemented?
Is it possible to add metadata to JavaScript objects (including strings, numbers and functions)? That is,
double = function(a){ return a*2; };
addMetadata(double,{desc:"Returns the double of a number."});
getMetadata(double).desc;
How could addMetadata and getMetadata be implemented?
Share Improve this question asked Jan 20, 2013 at 21:13 MaiaVictorMaiaVictor 53.1k47 gold badges158 silver badges302 bronze badges 2- 1 For objects, yes. For strings and numbers and booleans, no. You can always create your own map structure I guess, but I wouldn't call that "metadata" unless I really wanted to for some reason :-) – Pointy Commented Jan 20, 2013 at 21:18
- 1 Functions are objects in JavaScript, so yes. – Pointy Commented Jan 20, 2013 at 21:23
2 Answers
Reset to default 3For objects, including functions, the best way to implement get/setMetadata is not to implement it at all.
double = function(a){ return a*2; };
double.desc = "Returns the double of a number."
alert(double.desc);
For "primitive" strings/numbers you can use a dictionary approach like suggested in another answer:
metaStorage = {}
setMetaData = function(obj, data) {
if(typeof obj == "object")
obj._metaData = data;
else
metaStorage[obj] = data;
}
getMetaData = function(obj) {
if(typeof obj == "object")
return obj._metaData;
else
return metaStorage[obj];
}
setMetaData(1, "this is one");
console.log(getMetaData(1))
setMetaData(window, "my window");
console.log(getMetaData(window))
However, I can't imagine how it could be useful to attach metadata to string/number literals.
You could do this :
var metaDataStorer = {};
function addMetadata(object, meta) {
metaDataStorer[object] = meta;
}
function getMetadata(object) {
return metaDataStorer[object];
}
本文标签: Add metadata to JavaScript objectsStack Overflow
版权声明:本文标题:Add metadata to JavaScript objects - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1745217466a2648240.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论