Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.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_Jquery_Object_Private Methods - Fatal编程技术网

我可以从同一个javascript对象中调用私有函数吗

我可以从同一个javascript对象中调用私有函数吗,javascript,jquery,object,private-methods,Javascript,Jquery,Object,Private Methods,埃塔:我不相信这个问题是重复的一个链接。我知道如何返回私有变量(如下代码所示),这个问题是关于如何在同一个对象中调用私有函数 我很难找到javascript的相关信息。我声明了一个对象,并且在该对象中声明了四个函数(三个是对象方法,一个不是)。我想将第四个作为对象方法,这样我就可以分别从jquery(timer.displayTime();)调用它,但当我这样做时,startintervalimer函数的使用停止工作。我想做的事可能吗 var startStopTime = function()

埃塔:我不相信这个问题是重复的一个链接。我知道如何返回私有变量(如下代码所示),这个问题是关于如何在同一个对象中调用私有函数

我很难找到javascript的相关信息。我声明了一个对象,并且在该对象中声明了四个函数(三个是对象方法,一个不是)。我想将第四个作为对象方法,这样我就可以分别从jquery(timer.displayTime();)调用它,但当我这样做时,startintervalimer函数的使用停止工作。我想做的事可能吗

var startStopTime = function() {

 //This function is currently called inside startIntervalTimer(); 
 function displayTime() {
    //Display correct time
  };

//I WANT SOMETHING LIKE THIS INSTEAD BUT (SEE startIntervalTimer)
this.displayTime = function() {
//Display correct time
}

  var intervalTimer; 
  this.startIntervalTimer = function() {
    console.log(timeSetMS);
    intervalTimer = setInterval(function() {
      if(timeSetMS > 0) {
       timeSetMS -= 1000;
      displayTime(); //THIS IS WHERE AND HOW IT IS CALLED
      this.displayTime(); //THIS IS WHAT I'M GOING FOR, BUT IT WON'T WORK
      console.log(timeSetMS); 
      } else if(timeSetMS <= 0) {
        clearInterval(intervalTimer);
        console.log("timer stopped");
      }  
    }, 1000
    );
  }   
};

您可以在对象内声明另一个变量,即
self

var startStopTime = function() {
  //declare self
  var self = this;

  this.displayTime = function() {
  //Display correct time
  }

  var intervalTimer; 
  this.startIntervalTimer = function() {
    console.log(timeSetMS);
    intervalTimer = setInterval(function() {
      if(timeSetMS > 0) {
       timeSetMS -= 1000;
      displayTime(); 
      self.displayTime(); // use self instead
      console.log(timeSetMS); 
      } else if(timeSetMS <= 0) {
        clearInterval(intervalTimer);
        console.log("timer stopped");
      }  
    }, 1000
    );
  }   
};
var startStopTime=function(){
//声明自己
var self=这个;
this.displayTime=函数(){
//显示正确的时间
}
无功间隔定时器;
this.startintervalimer=函数(){
console.log(timeSetMS);
intervalTimer=setInterval(函数(){
如果(时间集>0){
timeSetMS-=1000;
显示时间();
self.displayTime();//改用self
console.log(timeSetMS);

}否则,如果(timeSetMS)可能的话,这个副本是完美的。谢谢!
var startStopTime = function() {
  //declare self
  var self = this;

  this.displayTime = function() {
  //Display correct time
  }

  var intervalTimer; 
  this.startIntervalTimer = function() {
    console.log(timeSetMS);
    intervalTimer = setInterval(function() {
      if(timeSetMS > 0) {
       timeSetMS -= 1000;
      displayTime(); 
      self.displayTime(); // use self instead
      console.log(timeSetMS); 
      } else if(timeSetMS <= 0) {
        clearInterval(intervalTimer);
        console.log("timer stopped");
      }  
    }, 1000
    );
  }   
};