对象中的javascript函数调用
我有一个javascript对象,如下所示:对象中的javascript函数调用,javascript,Javascript,我有一个javascript对象,如下所示: 'use strict'; function Queue() { this.newJob = function(parm1, callback){ if ( parm1 == 'example') newJob('name'); else .... } } module.exports = Queue; 在这个.newJob函数中,我再次调用newJob。像
'use strict';
function Queue() {
this.newJob = function(parm1, callback){
if ( parm1 == 'example')
newJob('name');
else
....
}
}
module.exports = Queue;
在这个.newJob函数中,我再次调用newJob。像这样:
newJob('name');
我不断得到错误:
ReferenceError: newJob is not defined
如何调用函数而不出现错误
当我将
newJob
更改为this.newJob
时,我得到了类型错误:this.newJob不是调用this.newJob的函数。newJob
在队列实例中,您需要始终说this.newJob
,而不仅仅是newJob
此外,将函数附加到原型上所需的内存更少,如下所示:
function Queue() {
}
Queue.prototype.newJob = function(parm1, callback){
if(someVariableThatPreventsInfiniteRecursion === false)
this.newJob()// whatever.
}
您需要定义一个名为newJob
的变量,并为其分配函数引用
既然您说您是从newJob
函数中调用它,那么最简单的方法就是使用命名的函数表达式创建它
函数队列(){
this.newJob=函数newJob(parm1,回调){
console.log(parm1);
如果(parm1==“示例”){
newJob(“名称”);
}
}
}
var q=新队列;
q、 newJob(“示例”)代码>您需要添加更多代码,以便我们能够进行分析。包括变量newDataAnalysisJob。没有足够的问题描述我指的是newJob。不是一个变量。刚刚编辑了这个问题。“当我将newJob更改为this.newJob时,我得到了类型错误:this.newJob不是函数”-我的答案中有一个实时演示。它表明,这种情况不会发生在该代码中。您需要提供实际演示问题的。如果我这样做。newJob我得到:TypeError:this.newJob不是function@JoaoFilipeClementeMartins-你做错了。它在我提供的示例中起作用。你还没有提供一个。我没办法知道你做错了什么。@Paul-这是一个现场演示。您可以单击“运行代码片段”并看到它正在工作此
是队列实例。当您调用x.foo
时,此的值是x
而不是foo
。危险!无限递归!哈哈,当然,他的问题总的来说是个问题。我将使用if语句进行更新。