set Time out에 this가 문제를 가리키고 있습니다.

1684 단어 settimeout
var test = {

    info: "hello",

    fn: function(){

        console.log(this.info);

        setTimeout(arguments.callee, 1000)

    }

}

위의 테스트를 실행합니다.fn () 때.처음에는 "Hello"로 돌아갈 수 있습니다.두 번째 후에'undefined'로 돌아왔습니다. 콘솔을.log (this.info) 를 console로 변경합니다.log(this)에서 알 수 있듯이 set Timeout 안에 있는this가 두 번째 이후에 모두 윈도우를 가리키는 것으로 바뀌었기 때문이다.우리의 목적은this가test를 가리키는 것이다.자료를 뒤졌다.해결 방법 찾기:
var test = {

    info: "hello",

    fn: function(){

        console.log(this.info);

        setTimeout(this.bind(this, arguments.callee), 1000);

    },

    bind: function(object, func){

        return function(){

            return func.apply(object, arguments)

        }

    }

}

좋은 웹페이지 즐겨찾기