覆盖整个功能

时间:2019-03-16 06:01:57

标签: javascript typescript

我正在尝试构建一个间谍函数,正在构建一个接受另一个函数并覆盖它的函数。但是我能够覆盖它。

function spy(f: (...args: any[]) => any | void) {
    const g = f;
    const metadata: IMetadata = {
        calledCount: 0,
        calledWith: []
    }

    f = function (...prototypeArgs: any[]) {
        console.log('Hello from prototype')
        metadata.calledCount++
        metadata.calledWith!.push(prototypeArgs)
        return g(...prototypeArgs)
    }
    return Object.freeze(metadata)
}

我正在对此进行测试

const g = spy(f)
f()
f()
console.log(g)

但是g没有改变,因为没有被覆盖。

{ calledCount: 0, calledWith: [] }

0 个答案:

没有答案