在JavaScript对象(包括字符串、数字和函数)中添加元数据是否可行?也就是说,
double = function(a){ return a*2; };
addMetadata(double,{desc:"Returns the double of a number."});
getMetadata(double).desc;
如何实现addMetadata和getMetadata方法?
在JavaScript对象(包括字符串、数字和函数)中添加元数据是否可行?也就是说,
double = function(a){ return a*2; };
addMetadata(double,{desc:"Returns the double of a number."});
getMetadata(double).desc;
对于对象,包括函数,在实现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))
然而,我无法想象将元数据附加到字符串/数字文字常量会有何用处。
1
和 "1"
或者 true
和 "true"
。这实际上是属性名称的限制(所有内容都被转换为字符串)。 - Felix Klingstorage[typeof x][x]=data
的东西,但我仍然不明白在原始数据类型上附加数据的任何意义。 - georgvar metaDataStorer = {};
function addMetadata(object, meta) {
metaDataStorer[object] = meta;
}
function getMetadata(object) {
return metaDataStorer[object];
}