有没有办法知道某个类中是否正在运行某个方法?

时间:2020-10-15 04:41:23

标签: javascript typescript class

我感兴趣的是能够确定类方法是在类本身内部执行还是从外部执行,并具有不同的功能。

确定类方法是否在类本身内执行的方法是什么?

这是我感兴趣的一个快速而肮脏的例子:

class Example {
    internal = false
    meow () {
        console.log(this.internal);
        return 'meow'
    }
    makeSound () {
       return this.meow.bind({...this, internal: true})();
    }
}

const example = new Example();
console.log(example.meow())
console.log(example.makeSound())

此处,Example#meow运行两次,一次在Example#makeSound内部运行,一次运行。我想要一种从Example#meow内部知道方法何时从类内部执行的方法,而不是从类外部执行的方法,例如example.meow()

一种方法是将所有内部调用绑定到方法上,如果我将属性internal添加到此绑定的副本this上,则可以从{{1 }}呼叫的来源。

这仅仅是概念上的证明,但是尝试克隆它并不是一件好事,这似乎是一个真正的痛苦。

0 个答案:

没有答案