23 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'"
Run Code Online (Sandbox Code Playgroud)
关键点是根据属性的名称以编程方式获取属性的值.预设置属性没有帮助,因为在init期间没有信息可能请求哪些属性.
小智 43
现在,如果您的浏览器支持ES6代理功能,则可以使用.您可以在ECMAScript 6兼容性表中进行检查.
如果您有代理支持,则可以按如下方式使用它:
let handler = {
get(target,name) {
return `Value for attribute ${name}`
}
}
let x = new Proxy({},handler);
console.log(x.lskdjoau); // produces message: "Value of attribute 'lskdjoau'"
Run Code Online (Sandbox Code Playgroud)
适用于chrome,firefox和node.js. 缺点:在IE中不起作用 - freakin IE.不久.
可悲的是答案是否定的.请参阅Javascript中的Python的__getattr__
你有__defineGetter__,但正如你所说,你需要知道你将要访问的属性的名称.
顺便说一下,我认为你的意思是__getattr__(__getitem__适合你想要访问的东西[]).
| 归档时间: |
|
| 查看次数: |
9449 次 |
| 最近记录: |