javascript - 向 JavaScript 对象添加元数据

标签 javascript metadata metaprogramming

是否可以向 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/

相关文章:

javascript - 在 react 中安装后如何设置元素的状态?

android - 每秒检索帧数 - Android/MediaMetadataRetriever

c++ - Boost.Fusion 运行时开关

javascript - Cloud Endpoints 拒绝来自 javascript 前端的浮点值

javascript - 从 Html 表单 Meteor javascript 获取 Var 时出错

visual-studio - Double 常量是否被截断以在 VS 中显示?

metadata - 如何将 EFv5 的 dbGeography 空间数据类型与 WCF RIA 域服务类一起使用

c++ - is_Detected 可以使用哪些类型的模板?

ruby-on-rails - Rails 中的动态常量定义

attributes - Javascript 库 .getAttr() 函数不起作用?