我希望能够拦截以前尚未在JavaScript中设置的对象的访问属性。我想知道这是否可能?
Python中的等价物是__getattr__
内置方法:
class P(object):
def __getattr__(self, name):
return name
p = P()
x = p.x
p.x以前不存在,但是__getattr__
拦截了对先前未创建的成员变量的访问。 JavaScript中有类似的东西吗?
答案 0 :(得分:1)
您可以使用Proxies执行此操作。来自MDN的示例:
var handler = {
get: function(target, name){
return name in target?
target[name] :
37;
}
};
var p = new Proxy({}, handler);
p.a = 1;
p.b = undefined;
console.log(p.a, p.b); // 1, undefined
console.log('c' in p, p.c); // false, 37
然而,currently browser support is basically non-existent和填充这是不可能的。