我有一个类似以下的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
答案 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.
}