Javascript - 嵌套函数不会调用存根函数

时间:2017-01-02 15:04:33

标签: javascript

我试图调用一个存根的嵌套函数。 我正在使用sinon进行存根。

function logger(){

    function log(msg){

       sendMsg(msg)
    }

    var sendMsg = function (msg){
        console.log("original func")
    }

    return {
        log:log,
        sendMsg:sendMsg
    }
}

我正在发送' sendMsg' func并尝试从log函数调用它,但是调用原始函数而不是存根函数。

最奇怪的是,当我用sendMsg拨打this.sendMsg时,它会调用存根。

我确定有一个JS原则我不知道,我很高兴你能指出我一个......

由于

1 个答案:

答案 0 :(得分:3)

log()函数直接引用符号sendMsg来调用函数。 sendMsg唯一可见的log()是分配了“真实”功能的局部变量。更改返回对象上“sendMsg”属性的值不会影响该值; log()始终调用“真正的”sendMsg()函数。

如果写log()代替调用this.sendMsg,则会调用您的存根函数。