OOP Javascript를 처음 사용하여 this
키워드 및 이벤트에 문제가 있습니다.자바 스크립트 : 이벤트에 OOP 메소드 첨부 및 'this'키워드
내가 얻으려고하는 것은 다음과 같습니다. 여러 DOM 객체가 있고 공통 이벤트를 바인드 할뿐만 아니라 전역 컨테이너에 앞서 언급 한 객체에 대한 데이터를 보관 (런타임 성능 향상)하고 싶습니다.
function ClassThatDoesSomething() {
/* keeps node ids for processing in this.init */
this.nodes = new Array();
/* keeps processed node data for fast access */
this.nodeData = new Array();
this.sthAddNodes = function(/* ids */) {
/* appends node ids to local variable (this.nodeData) */
}
function init() {
/* gathers data from all nodes that were
added before and stores it in this.nodeData */
/* here, unsurprisingly, 'this' references the window element*/
addEvent(window,'scroll',this.scroll);
}
function scroll() {
/* do stuff when user scrolls the page */
/* 'this' references the window element here too */
}
addEvent(window,'load',this.init);
}
나중에 문서 본문에
, 난 그냥이를 추가 할 수 있습니다 : 더에var Ctds = new ClassThatDoesSomething();
그리고를하여 DOM 요소를 추가 :
그래서 내가하는 일은 기본적으로 이것이다
Ctds.addNodes(ids);
구현 코드는 더 이상 필요하지 않습니다.
질문 : init
및 scroll
방법에 JS 클래스 인스턴스에 액세스하는 방법 및 하지창 요소.
this
키워드를 사용할 필요는 없지만 여전히 나는 아무 것도 생각 나지 않았습니다.
P.
addEvent
은 이벤트를 첨부하는 매우 기본적인 기능으로, IE/Fx와 친숙하며 다른 기능은 없습니다.- 필자가 작성한 코드는 이미 기능적이지만 절차상의 형태로는 그냥 OOP했습니다.
- 사소한 하위 질문으로서 어떻게 든 인상을 받았다. getter/setter 메서드는 자바 스크립트에서 사용하지 않는 것이 좋지만 사용하면 괜찮습니까?
와우, 너무 많은 답변, 나는 압도되어, 모두에게 감사합니다. 어쨌든 방법은 정확히 어떻게 정의 될까요? (바보 같은 질문, 미안) – raveren
@Raveren : 음, 큰 질문입니다. 이 코드 샘플은 crockford가 "권한있는"멤버 선언을 호출하는 예제입니다. http://www.crockford.com/javascript/private.html을 참조하십시오. 실제로 JavaScript의 OOP에 대한 고급 접근 방식입니다. 자바 스크립트에서 기본 클래스 정의를 시작하려면 여기에서 시작하십시오. http://mckoss.com/jscript/object.htm –