Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对象中的javascript函数调用_Javascript - Fatal编程技术网

对象中的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。像

我有一个javascript对象,如下所示:

'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语句进行更新。