Mam problemy z uzyskaniem tego JSFiddle do pracy:

http://jsfiddle.net/y45jn/

var mainFunction = function() {
  this.text;
}

mainFunction.prototype.start = function(printText) {

  this.text = printText;

  var func = function() {
    document.getElementById('test').innerHTML += this.text + '<br/>';
  };

  setInterval(func,1000);

}

mainFunction.prototype.updateText = function(printText) {

  this.text = printText;

}

var test = new mainFunction();
test.start('hello');

setTimeout(function(){
  test.updateText('bye');
},5000);

To, co chcę zrobić, to pierwsze 5 sekund Drukuj Hello i po 5 sekundach Drukuj.

Nie jestem pewien, jak mogę wykonać funkcję (FUNC), wiedząc, że parametr tej klasy zmienił się.

0
San1ty 20 listopad 2013, 14:20

2 odpowiedzi

Najlepsza odpowiedź

Porozmawiałeś tutaj kontekst. Pamięć podręczna this W pewnej zmiennej i używa go wewnątrz interwału (lub użyj bind):

    this.text = printText;
    var self = this;

    var func = function() {
        document.getElementById('test').innerHTML += self.text + '<br/>';
    };

Następnie, po prostu modyfikuj właściwość instancji text:

setTimeout(function(){
    test.text = 'bye';
},5000);

Skrzypce

0
Artyom Neustroev 20 listopad 2013, 10:24

Rozwiązanie za pomocą metody wiązania:

setInterval(func.bind(this),1000);

http://jsfiddle.net/y45jn/5/

0
rafaelcastrocouto 20 listopad 2013, 10:29