我一直在寻找 JavaScript 中 Python 的 __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 个函数时,这会变得非常乏味。
最佳答案
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');
关于JavaScript:允许访问您尝试访问的 attr 的 __defineGetter__ 版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2240645/