JavaScript

时间:2015-06-15 03:48:36

标签: javascript

我希望能够拦截以前尚未在JavaScript中设置的对象的访问属性。我想知道这是否可能?

Python中的等价物是__getattr__内置方法:

class P(object):
    def __getattr__(self, name):
        return name

p = P()
x = p.x

p.x以前不存在,但是__getattr__拦截了对先前未创建的成员变量的访问。 JavaScript中有类似的东西吗?

1 个答案:

答案 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和填充这是不可能的。