如何监听 class 的实例化?

我有一个文件

class Test {
  constructor(){
    
  }
}

这个类是一个独立的文件,
这个类被多个其他文件所引用
如何提前hack这个类 让他每次实例化的时候回调给我,
让我知道他实例化了从而运行一些实例化的代码

阅读 2.9k
2 个回答

可以使用装饰器

function logClassInstance(target) {
  target.prototype.log = function() {
    console.log("实例化了 " + target.name + " 类");
  };
}

@logClassInstance
class MyClass {
}

const myClass = new MyClass();
myClass.log(); // 实例化了 MyClass 类

如果可以修改类的话,可以用操作构造函数的一些办法实现。

class Test {

        static watchInstantiated = {
            callback: (ins) => {
                console.log('监听到了被实例化:');
                console.log(ins)
            }
        };

        name = '12345';

        constructor(name) {
            this.name = name;
            Test.watchInstantiated.callback && Test.watchInstantiated.callback(this);
        }

    }

     new Test('123');
     new Test('456');
     new Test('789');
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题