prototype으로 정의한 method에 setTimeout 설정하기.
javascript 삼매경에 빠져있다.
processForm=function(inservleturl) {
    this.inservleturl = inservleturl;
    this.submitForm();
}

processForm.prototype.submitForm2=function() {
}

processForm.prototype.submitForm=function() {
    setTimeout("submitStep2()", 20);
}
현재 이 소스코드에서 submitForm 은 20ms 뒤에 submitStep2() 를 수행하려 할 것이다.
그러나 setTimeout은  동기적으로 동작해서 20ms뒤에 submitStep2() 를 수행하려 할 때쯤엔 이미 submitForm method 의 영역을 벗어나서 submitStep2() 를 processForm이 아닌 다른 곳에서 찾으려 할 것이다.

그렇다면 submitStep2()를 수행하려면 어떻게 해야할까?

답은 using setTimeout when using prototype 에서 찾을 수 있었다.
마지막 submitForm 을
processForm.prototype.submitForm=function() {
    var self = this ;
   setTimeout(function() { self.submitStep2() }, 20);
}

과 같이 바꾸어 주면 된다.
그러면 self는 여전히 processForm을 가리킬 것이고 submitStep2()는 정상적으로 수행된다.


반응형