对象中的javascript函数调用

时间:2018-01-30 20:53:35

标签: javascript

我有一个类似以下的javascript对象:

'use strict';

function Queue() {

   this.newJob = function(parm1, callback){
       if ( parm1 == 'example')
           newJob('name');
       else
           ....
   }

}

module.exports = Queue;

在this.newJob函数里面我再次调用newJob。像这样:

newJob('name');

我一直收到错误:

ReferenceError: newJob is not defined

如何在不收到错误的情况下调用该函数?

当我将newJob更改为this.newJob时,我会得到TypeError: this.newJob is not a function

2 个答案:

答案 0 :(得分:2)

您需要定义一个名为newJob的变量,并为其指定一个函数引用。

由于你说你是在newJob函数中调用它,最简单的方法是使用命名的函数表达式创建它。



function Queue() {
   this.newJob = function newJob(parm1, callback){
       console.log(parm1);
       if (parm1 == "example") {
          newJob('name');
       }

   }
}

var q = new Queue;
q.newJob("example");




或者,您可以首先引用您调用函数的实例:



function Queue() {
   this.newJob = function (parm1, callback){
       console.log(parm1);
       if (parm1 == "example") {
          this.newJob('name');
       }

   }
}

var q = new Queue;
q.newJob("example");




答案 1 :(得分:1)

要在您的队列实例中调用this.newJob,您需要始终说this.newJob,而不仅仅是newJob

此外,将函数附加到原型所需的内存较少,如下所示:

function Queue() {

}

Queue.prototype.newJob = function(parm1, callback){
  if(someVariableThatPreventsInfiniteRecursion === false)
    this.newJob()// whatever.  
}