回调函数无法调用全局方法和变量?

 test(){
   console.log("111")
 }

 var name = "小红";
     
     window['extendObj'].printPdf(it.result, function (el) {
            if (!el) {
                  this.test();
            } else {
                   this.name = "黄小明";
            }
       }, it.printerName, 60, it.printType);
                           

在回调函数中,调用test方法找不到,这是为什么呢?

阅读 3k
2 个回答

你代码的问题比较多,所以可能性其实不少。

姑且不论那个,this.test() 就很没有必要。

如果 test 是一个全局函数,那么它会被绑定在(或者应该绑定在)window 对象上。

而你的 function (el) 是一个普通函数,正常情况下如果 printPdf 内部没做其他处理且直接调用该函数(非 new 操作),则该函数的 this 指向 window

你这里提供的信息并不能得知 printPdf 方法内部做了何种操作,因此你可以直接使用 window.test() 来确保从 window 上获取 test 方法执行。

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