2010-06-15 3 views
0

window.setInterval 메소드의 시간 초과시 기존 객체에서 메소드를 실행할 수 있습니까? 전역 변수를 가지고이 전역 변수의 메서드를 setInterval에 호출함으로써 동일한 결과를 에뮬레이션 할 수 있지만이 메서드를 직접 사용할 수 있는지 알고 싶습니다.window.setInterval을 사용하여 기존 객체에 대한 메소드 실행

최고 감사합니다, Keshav

+0

실제로 무엇을 요구하고 있는지 분명하지 않습니다. 아마도 예제 코드를 붙여 넣을 수 있습니까? 코드를 읽는 것은 일반적으로 누군가의 코드를 읽는 것보다 쉽습니다 :) –

답변

2

예, 당신은이 작업을 수행 할 수 있습니다. 당신은 "바인딩"기존 객체가있는 새로운 기능을 확인하기 위해 도우미 함수가 필요 간격 타이머가 당신의 방법 ("것으로 someMethod") 호출 할 때 이제

var someRandomObject = { 
    someMethod: function() { 
    // ... whatever 
    }, 
    // ... 
}; 

// this is a "toy" version of "bind" 
function bind(object, method) { 
    return function() { 
    method.call(object); 
    }; 
} 

var interval = setInterval(bind(someRandomObject, someRandomObject.someMethod), 1000); 

를, "this"이 포인터를 참조합니다 목적.

"바인드"의 해당 버전이 단순화되었습니다. Prototype, Functional, jQuery 등과 같은 라이브러리는 일반적으로 더 강력한 버전을 제공합니다. 또한 "바인딩"기능은 언젠가 자바 스크립트의 원래 부분이 될 것입니다. — 이미 일부 브라우저에 있습니다.

관련 문제