Greeter라는 JavaScript 클래스가 있습니다. 내 수업에는 다음이 있습니다.
a
내가 원하는 것은 내 문서 클릭 이벤트 핸들러가 공용 함수를 호출하는 것 a
입니다. 하지만 " Uncaught ReferenceError : a is not defined " 오류가 발생합니다.
이것은 내 코드입니다.
var Greeter = (function () {
function Greeter() {
}
Greeter.prototype.a = function () {
alert('I am in a');
};
$(document).on( "click", function() {
alert('I am in click event handler');
a(); // <-- Why can't I call the public function a
});
return Greeter;
})();
var greeter = new Greeter();
다음은 데모 입니다.
a
여기서는 공개 기능 이 아닙니다 . window
객체 에 정의 된 함수 는 공용이며 어디서나 액세스 할 수 있습니다 ( scope chain 사용 ). 의 프로토 타입에 정의되어 Greeter
있으므로를 사용하여 Greeter에서 생성 된 객체 new Greeter
또는 Greeter에서 상속 된 자식은 구문을 사용하여 호출 할 수 있습니다 obj.a()
.
다음 구문을 사용하여 함수를 호출 할 수 있습니다.
Greeter.prototype.a();
또는 다음에서 greeter
생성 된 개체 를 사용하여 액세스 할 수도 있습니다.Greeter
greeter.a(); // instance of Greeter class. Has access to the function defined on prototype
또한 프로토 타입에 새 함수를 추가하는 코드와 함수 외부에 이벤트 바인딩을 추가하는 것이 좋습니다 Greeter
.
var Greeter = (function() {
function Greeter() {}
return Greeter;
})();
Greeter.prototype.a = function() {
alert('I am in a');
// b();
};
$(document).on("click", function() {
alert('I am in click event handler');
Greeter.prototype.a();
});
var greeter = new Greeter();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다