是否可以向 JavaScript 对象(包括字符串、数字和函数)添加元数据?也就是说,
double = function(a){ return a*2; };
addMetadata(double,{desc:"Returns the double of a number."});
getMetadata(double).desc;
如何实现 addMetadata 和 getMetadata?
最佳答案
对于对象,包括函数,实现get/setMetadata的最好方式就是根本不实现。
double = function(a){ return a*2; };
double.desc = "Returns the double of a number."
alert(double.desc);
对于“原始”字符串/数字,您可以使用另一个答案中建议的字典方法:
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))
但是,我无法想象将元数据附加到字符串/数字文字有何用处。
关于javascript - 向 JavaScript 对象添加元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14429398/