iT邦幫忙

0

javascript caller in class function

  • 分享至 

  • xImage
Class A{
    A1(){
        console.log(`${caller} call A1()`);
    }
}

function B1(){
    var a=new A();
    
    A1();
}

請問要怎麼樣可以秀出"B1 call A1()"

在非class 的function中可以直接用function.caller 就能得到B1,但定義在class裡的function 好像就沒辦法這麼用了

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
listennn08
iT邦高手 5 級 ‧ 2022-09-27 17:15:16
最佳解答

雖然不曉得為什麼要這麼做,不過可以這樣做

class A {
    A1(){
        const obj = {};
        Error.captureStackTrace(obj, this.A1);
        const [stack] = obj.stack.split("\n").slice(1)
        const caller = stack.replace(/\s+at ([a-z_0-9]+) \(.*/gim, '$1');
        console.log(`${caller} call A1()`); // B1 call A1()
    }
}

function B1(){
    var a = new A();
    a.A1();
}
gmlin iT邦新手 5 級 ‧ 2022-09-28 18:01:02 檢舉

感謝

主要是用在共用function ,想要知道到底是誰來call

0
weaponfeel
iT邦見習生 ‧ 2023-11-29 16:17:14

感謝您分享這個功能。


happy wheels

我要發表回答

立即登入回答