是否存在python的javascript等价物';s_u_ugetattr_u_u方法?

是否存在python的javascript等价物';s_u_ugetattr_u_u方法?,javascript,Javascript,在python中,您可以定义一个对象,该对象具有\uuu getattr\uuu(self,key)方法来处理所有未知属性,以便以编程方式解决,但在javascript中,您只能为预定义属性定义getter和setter。有没有一种通用的方法可以在javascript中完成前一件事 示例代码类似于smth: function X() {}; X.prototype={ __getattr__:function(attrname) { return "Value for attribu

在python中,您可以定义一个对象,该对象具有
\uuu getattr\uuu(self,key)
方法来处理所有未知属性,以便以编程方式解决,但在javascript中,您只能为预定义属性定义getter和setter。有没有一种通用的方法可以在javascript中完成前一件事

示例代码类似于smth:

function X() {};
X.prototype={
  __getattr__:function(attrname) {
    return "Value for attribute '"+attrname+"'";
  }
}

x=new X()
alert(x.lskdjoau); // produces message: "Value of attribute 'lskdjoau'"

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

遗憾的是,答案是否定的。请参阅

您已经知道了,但正如您所指出的,您需要知道将要访问的属性的名称


顺便说一句,我认为您的意思是
\uuuu getattr\uuuuu
\uuuu getitem\uuuuu
用于您希望使用
[]
访问的内容)。

如果您的浏览器支持ES6代理功能,现在就可以了。你可以在网上查一下

如果您有代理支持,您将按如下方式使用它:

let处理程序={
获取(目标、名称){
返回`属性${name}的值`
}
}
设x=newproxy({},handler);

console.log(x.lskdjoau);//生成消息:“属性'lskdjoau'的值”
谢谢。是的,那倒不如getattr@Roatin为什么?JS比任何其他功能都更需要这个功能(除了人们十年来一直要求的“少吸”功能)。天哪,我一直在等这个!!!看起来你把它打包了。干得好!我还不清楚。任何JSFIDLE?将此添加为注释作为问题已结束。对于像我这样来自python背景的js新手来说,我想要的是,对于
\uuu getattr\uuuuuuuuuu
myObj[myKey]
,对于
\uuuuuuu hasattr\uuuuuuuuuu
myObj.hasOwnProperty(myKey)