在同一个js文件中引用较早定义的函数表达式时,如何克服“ ..不是函数”的问题

时间:2019-06-03 12:08:29

标签: javascript node.js function

在同一文件中访问函数表达式时,错误为..“不是函数”。 我需要下面的函数表达式,以便在js文件之外的其他.js文件以及同一js文件中都可用。

我尝试了以下博客中的以下内容,似乎没有任何作用 https://github.com/nodejs/node/issues/2923

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Not_a_function

// this is in abc.js
function qpValidations() {
     this.addDaystoGetDate = function(noOfDays){
     ... 
     }

      this.constructDate = function(){
        this.addDaystoGetDate(2);// here issue is coming, where trying to                                        
                                  //call function in same .js file
      }

}
module.exports = new qpValidations();

我们非常感谢您的帮助!,尽管这个问题在我身上发生了很多次,并试图避免文件循环依赖以及成簇函数的表达和声明,早些时候已经解决了这个问题,但是现在又弹出了不确定的内容此问题的根本原因..?

3 个答案:

答案 0 :(得分:1)

如果在同一个文件中调用函数时仅遇到问题,则很难提供帮助,因为您没有显示如何尝试调用它。但我建议您尝试这样的事情:

// this is in abc.js
function qpValidations() {
     this.addDaystoGetDate = function(noOfDays){
     ... 
     }

      this.constructDate = function(){
        this.addDaystoGetDate (2);// here issue is coming
      }

}

const newQp = new qpValidations()
module.exports = newQp;

newQp.addDaystoGetDate();

答案 1 :(得分:0)

addDaystoGetDate函数需要一个参数。调用函数时尝试发送参数。

newQp.addDaystoGetDate(5);
newQp.addDaystoGetDate("some text"); //or whatever you need

答案 2 :(得分:0)

最终得到了答案,它来自我的一个好友:),范围是此。addDaystoGetDate() 当在另一个this.constructDate()函数中调用该函数时,它会更改。因此,当解决方案将“ this”对象分配给如下所示的某个变量时,无论遇到什么地方,都可以进一步引用

function validation(){
    var refObj = this;

    refObj.addDaystoGetDate =function(dayscount){
    }

    refObj.constructDate = function(){
     refObj.addDaystoGetDate(2);
    }


} 
module.exports = new validtaion();