C++ 배경에서 나오므로 명확한 타이핑이없는 OO 언어로 작업하려고하면 두통이됩니다.Javascript *는 함수 (프로토 타입 함수)가 아닙니다.
웹 페이지의 동적 요소는 객체별로 관리되므로 각 요소를 관리해야하기 때문에 객체별로 제어됩니다. 이 요소는 객체 자체의 내부에있는 데이터의 시각적 출력 일뿐입니다. 필요한 모든 것입니다.
을 제외하고 내가 클릭 할 때 내부 기능을 수행 할 객체가 필요합니다. 지금까지 내 두통의 가장 큰 원천 인 것 같습니다.
자바 스크립트 :
function onClick(file) //The external onClick function I use to try to get it to call from.
{
file.state = INUSE;
file.checkState();
}
function fileObject() { //The file object itself
this.element;
this.newElement();
//initialize stuff for the object
}
fileObject.prototype.newElement = function() { //creates a new element and sets its event listener
this.element.click(function() {onClick(this)});
}
fileObject.prototype.checkState = function() {/*does stuff*/} //apparently this is "not a function"
내가 정확히 얻을 오류는 파이어 폭스의 콘솔 패널에서 "file.checkState는 함수가 아닙니다."
저는 아직 자바 스크립트에 익숙하지 않지만 일부 디버깅을 한 후에는 모든 오류를 일으키는 기능이 명시 적으로 onClick(this)
임을 알게되었습니다. 다른 항목과 함께 사용하면 onClick
함수는 완벽하게 작동하지만 this
키워드는 실제로는 onClick 범위 내부에 undefined
이라는 모든 검사가 file
인 것으로 표시되므로 fileObject에 대한 참조를 실제로 보내지 않는 것으로 보입니다.
내가 수행하려고하는 방식에 근본적으로 잘못된 것이 있습니까? 아니면이 스 니펫이 작동하는 데 도움이되는 단계가 없습니다.
가능한 복제 [어떻게합니까 "이"키워드를 사용할 수 있습니까?] 같은 (http://stackoverflow.com/questions/3127429/how-does-the-this-keyword-work) – JJJ
뭔가 : 'this'는'undefined'가됩니까? –
좋아요, 그럼 간단히'this'를 잘못 사용하고 있지만 여전히 문제는 해결되지 않습니다. 현재 범위를 통해 유지 될 함수에 대한 참조를 전달하는 깨끗한 메서드 만 있으면됩니다. 어떻게하면됩니까? – Kats