有没有javascript相当于python的__getattr__方法?

时间:2009-10-07 04:36:04

标签: javascript

在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'"

关键点是根据属性的名称以编程方式获取属性的值。预设置属性没有帮助,因为在初始化期间没有信息可能会请求哪些属性。

2 个答案:

答案 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__适用于您希望使用[]访问的内容。)