관찰자 모드 (사용자 정의 이벤트)
//
let ObserverMode = {
//
on: function(){
// , " "
if(!arguments || arguments.length < 2) return this.warningMessages.info1;
//
let observes = arguments[0];
// , " "
if(!this.isFistType(observes)) return this.warningMessages.info2;
//
let fn = arguments[1];
// , " "
if(!this.isSecondType(fn)) return this.warningMessages.info3;
// handler , ,
if(!this.handler) this.handler = {};
// ,
if(!this.handler[observes]) this.handler[observes] = [];
//
this.handler[observes].push(fn);
},
//
emit: function (){
//
let observes = arguments[0];
//
let params = arguments[1];
// " "
if(!this.handler[observes] || !this.handler[observes].length) return this.warningMessages.info4;
//
else this.handler[observes].forEach(item =>{
item(params);
})
},
//
off: function(){
// , " "
if(!arguments || !arguments.length) return this.warningMessages.info1;
//
let observes = arguments[0];
// " "
if(arguments.length > 0 && !this.isFistType(observes)) return this.warningMessages.info2;
// 1 , " "
if(arguments.length == 1){
if(Object.keys(this.handler).indexOf(observes) > -1){
delete this.handler[observes];return;
}
else return this.warningMessages.info4;
}
//
let fn = arguments[1];
// 1 " "
if(arguments.length > 1 && !this.isSecondType(fn)) return this.warningMessages.info3;
else {
//
let index = this.handler[observes].indexOf(fn);
// , " "
index > -1?this.handler[observes].splice(index,1):console.log(this.warningMessages.info5);
}
},
//
isFistType: function(value){
let type = typeof value;
return (type == 'number') || (type == 'string');
},
//
isSecondType: function(value){
return value.prototype && (value.__proto__ === Function.prototype)
},
//
warningMessages: {
info1: " ",
info2: " ",
info3: " ",
info4: " ",
info5: " ",
}
}
이 사용자 정의 이벤트 가 실 현 됩 니 다. 위 코드 의 기능 은 내 장 된 이벤트 와 달리 대상 의 emit 트리거 를 수 동 으로 호출 해 야 합 니 다. 내 장 된 이벤트 의 모든 이벤트 이름 은 하나의 실행 함수 에 만 대응 합 니 다. 여기 서 사용자 정의 이 벤트 는 하나의 이벤트 목록 으로 여러 개의 동명 이벤트 함 수 를 동시에 처리 할 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.