 
			
				11.04.2016, 10:49
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 13.08.2012 
					
					
					
						Сообщений: 38
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				this не в контексте объекта
			 
			
		
		
		
		есть такой объект: 
var answerTimer = {
    this: answerTimer,
    timerAnswer: -1,
    answerTimerId: null,
    timer: function () {
        ++this.timerAnswer;
        this.toPrint();
        this.answerTimerId = setTimeout(this.timer, 1000);
    },
    reset: function () {
        this.timerAnswer = 0;
    },
    stop: function () {
        this.reset();
        clearTimeout(this.answerTimerId);
    },
    toPrint: function () {
        document.getElementById("answerTimer").innerHTML = "last answer: " + this.timerAnswer + " sec";
    },
};
при вызове  setTimeout из первой функции, в  this оказывается контекст  window! 
как сделать что бы  this был в контекст самого объекта?  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось woojin, 11.04.2016 в 10:52.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				11.04.2016, 11:05
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 junior 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 29.11.2011 
					
					
					
						Сообщений: 3,924
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
setTimeout(this.timer.bind(this), 1000);
  
		
	
		
		
		
		
		
			
				__________________ 
				Чебурашка стал символом олимпийских игр. А чего достиг ты? 
Тишина - самый громкий звук
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				11.04.2016, 11:12
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 13.08.2012 
					
					
					
						Сообщений: 38
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 спасибо! 
 
а, автоматизировать эту "биндовку" ни как нельзя? 
к примеру добавить функцию которая при создании объекта сама сразу привязывала все методы и переменные к данному объекту? 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось woojin, 11.04.2016 в 11:18.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				11.04.2016, 11:22
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.05.2010 
					
					
					
						Сообщений: 33,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		woojin,
  
<div id="timer"></div>
 <script>
 var answerTimer = {
    timerAnswer: 0,
    answerTimerId: null,
    timer: function () {
        this.toPrint();
        ++this.timerAnswer;
        var self = this;
        this.answerTimerId = setTimeout(function() {
        self.timer()
}, 1000);
    },
    reset: function () {
        this.timerAnswer = 0;
    },
    stop: function () {
        this.reset();
        clearTimeout(this.answerTimerId);
    },
    toPrint: function () {
        document.getElementById("timer").innerHTML = "last answer: " + this.timerAnswer + " sec";
    }
};
  answerTimer.timer();
  setTimeout(function() {
        answerTimer.stop()
}, 5054);
  </script>
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				11.04.2016, 12:44
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 30.04.2012 
					
					
					
						Сообщений: 3,018
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
(function(window) {
    var setTimeout = window.setTimeout;
    window.setTimeout = function(callback, delay, context) {
         setTimeout(callback.bind(context), delay);
    };
})(window);
/***********************/
var obj = {
    fn: function() {
        alert(this.foo);
    },
    foo: 'bar'
};
setTimeout(obj.fn, 1000, obj);
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				11.04.2016, 13:52
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 junior 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 29.11.2011 
					
					
					
						Сообщений: 3,924
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		woojin, правильный вариант того, что ты хочешь сделать, выглядит как-то так
 
function Timer(selector) {
  this.id = null;
  this.element = document.querySelector(selector);
  this.tick = this.tick.bind(this);
  this.reset();
}
Timer.prototype.start = function() {
  this.reset();
  this.id = setTimeout(this.tick, 1000);
};
Timer.prototype.tick = function() {
  this.print();
};
Timer.prototype.reset = function () {
  this.timestamp = Date.now();
};
Timer.prototype.stop = function () {
  this.reset();
  clearTimeout(this.this.id);
};
Timer.prototype.print = function () {
  var diff = Date.now() - this.timestamp; // ms
  var seconds = Math.ceil(diff / 1000);
  this.element.innerHTML = "last answer: " + seconds + " sec";
};
// usage
var timer = new Timer("#answerTimer");
timer.start();
 
		
	
		
		
		
		
		
			
				__________________ 
				Чебурашка стал символом олимпийских игр. А чего достиг ты? 
Тишина - самый громкий звук
			 
		
		
		
		
		
						  
				
				Последний раз редактировалось nerv_, 11.04.2016 в 13:55.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				16.04.2016, 12:16
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 13.08.2012 
					
					
					
						Сообщений: 38
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 это самый интересный вариант - спасибо! 
 
P.S. вопрос не по теме: а как тогда JQ активируется без привязки к какому либо селектору? 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				20.04.2016, 17:10
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 23.12.2015 
					
					
					
						Сообщений: 39
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Я вот не пойму, это типа такой приём используется ,чтобы показать, когда был написан комментарий или сообщение отправлено? 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |