JavaScript:__ defineFetter__的版本允许访问您尝试访问的attr?

时间:2010-02-10 21:58:15

标签: javascript getattr

我一直在寻找JavaScript的__getattr__的替代品,这里有几个答案提到了Firefox的__defineGetter__。这不仅不是跨浏览器兼容的,而且它实际上不允许你做任何真正有用的事情,就像这个伪代码一样:

var api = function()
{
    var __getattr__ = function(attr, args)
    {
        var api_method = attr;
        $post(url, api_method, args, function(response){alert(response)});
    }
}

// Now api.getprofile('foo', 'spam'); would call the following code behind the scenes:
$post(url, 'getprofile', ['foo', 'spam'], function(response){alert(response)});

显然这是伪代码,但有没有任何已知的方法在JavaScript中实现这一点?我知道我可以很好地使用手册版本(最后一行代码)但是当你获得大约30个函数时,这变得非常乏味。

1 个答案:

答案 0 :(得分:1)

var api = {
    getAttr:function(attr) {
        var args = [];
        for (var i = 1; i < arguments.length; i++) {
            args.push(arguments[i]);
        }
        $post(url, attr, args, function(response){alert(response)});
    }
};

这不是最漂亮的事情,并且行为不一样,但它应该有效。你必须这样称呼:api.getAttr('getprofile','foo','spam');