개체 내의 콜백 메서드가 있는지 확인하는 함수가 있습니다. 현재 클로저 컴파일러는 메소드 (onClickDisplay 및 onCloseHide)의 이름을 변경하여 makeCallbacks()의 모든 검사가 실패합니다.이름 바꾸기/콜백 메서드 유지 방법
또한
makeCallbacks = function(tobject, methodNames) {
var callbacks = {};
methodNames.each(function(methodName) {
if (!tobject[methodName]) {
throw new Error(methodName + ' missing from ' + tobject.toString());
}
callbacks[methodName] = tobject[methodName].bind(tobject);
});
return callbacks;
};
FeedbackController = Class.create({
initialize: function(id, item) {
this.callbacks = makeCallbacks(this, this.callbackNames());
},
observeElements: function() {
$$(this.id + ' .closeme').invoke('observe', 'click', this.callbacks.onCloseHide);
},
callbackNames: function() {
return ['onClickDisplay', 'onCloseHide'];
},
onClickDisplay: function(e) {
// do something
},
onCloseHide: function(e) {
// do something
}
});
이것은 듣고 싶은 것이 아닐지도 모르지만 대개 단순히 명시 적으로 확인하는 대신 개체에 해당 메서드가 있어야합니다. 필요한 경우 정적으로 입력 된 언어 사용을 고려하십시오. – ThiefMaster