Как преодолеть проблему ".. не является функцией" при обращении к ранее определенному выражению функции в том же файле js - PullRequest
0 голосов
/ 03 июня 2019

При доступе к выражению функции в том же файле выдает ошибку .. "не является функцией". Мне нужно, чтобы это выражение функции ниже было доступно как вне 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 ]

1 голос
/ 03 июня 2019

Если у вас возникают проблемы только с вызовом функции в одном и том же файле, трудно помочь, потому что вы не показали, КАК вы пытаетесь вызвать его.Но я бы посоветовал вам попробовать что-то вроде этого:

// 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();
0 голосов
/ 05 июня 2019

Наконец-то получил ответ, он был от одного из моих друзей :), область действия this.addDaystoGetDate () изменяется при вызове внутри другой функции this.constructDate (). Таким образом, в качестве решения назначьте объект «this» некоторой переменной, как показано ниже, далее можно ссылаться одинаково везде, где мы сталкиваемся с этим

function validation(){
    var refObj = this;

    refObj.addDaystoGetDate =function(dayscount){
    }

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


} 
module.exports = new validtaion();
0 голосов
/ 03 июня 2019

Функция addDaystoGetDate требует параметр. попробуйте отправить параметр при вызове функции.

newQp.addDaystoGetDate(5);
newQp.addDaystoGetDate("some text"); //or whatever you need
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...