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;
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))
ただし、メタデータを文字列/数値リテラルに添付することがどのように役立つか想像できません。
あなたはこれを行うことができます:
var metaDataStorer = {};
function addMetadata(object, meta) {
metaDataStorer[object] = meta;
}
function getMetadata(object) {
return metaDataStorer[object];
}