我一直在寻找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个函数时,这变得非常乏味。
答案 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');