在python中,您可以定义一个具有__getattr__(self,key)
方法的对象来处理所有可以以编程方式解决的未知属性,但在javascript中,您只能为预定义属性定义getter和setter。是否有通用的方法在javascript中完成前一项工作?
示例代码就像:
function X() {};
X.prototype={
__getattr__:function(attrname) {
return "Value for attribute '"+attrname+"'";
}
}
x=new X()
alert(x.lskdjoau); // produces message: "Value of attribute 'lskdjoau'"
关键点是根据属性的名称以编程方式获取属性的值。预设置属性没有帮助,因为在初始化期间没有信息可能会请求哪些属性。
答案 0 :(得分:37)
如果您的浏览器支持ES6代理功能,现在可以使用。您可以在ECMAScript 6 compatibility table。
中查看此内容如果您有代理支持,可以按如下方式使用它:
EditTemplate
适用于chrome,firefox和node.js.缺点:在IE中不起作用 - freakin IE。很快。
答案 1 :(得分:9)
可悲的是答案是否定的。请参阅Python's __getattr__ in Javascript
你有__defineGetter__
,但正如你所说,你需要知道你将要访问的属性的名称。
顺便说一下,我认为您的意思是__getattr__
(__getitem__
适用于您希望使用[]
访问的内容。)