Javascript - 捕获对对象属性的访问

8 浏览
0 Comments

Javascript - 捕获对对象属性的访问

有没有可能当访问对象的某个属性时或试图访问该属性时进行捕获?

例如:

我创建了一个自定义对象Foo

var Foo = (function(){
    var self = {};
    // ... 设置一些属性
    return self;
})();

然后对Foo执行一些操作 - 有人试图访问属性bar

Foo.bar

有没有办法(可能是原型)来捕获这个操作?bar可以在Foo上是未定义的。我可以捕获对未定义属性的任何访问。

例如,如果barFoo上是未定义的,并且试图访问Foo.bar,类似这样:

Foo.prototype.undefined = function(){
    var name = this.name; // 试图访问的属性的名称(bar)
    Foo[name] = function(){
        // ...做一些事情
    };
    return Foo[name];
}

但是,这个示例是函数式的。

概念

Foo.* = function(){
}

背景

如果我有一个自定义函数,我可以监听每次调用该函数的次数(见下面的代码)。只是想知道是否可能用于属性访问。

Foo = function(){};
Foo.prototype.call = function(thisArg){
    console.log(this, thisArg);
    return this;
}

0