JavaScript 디자인 모드 (중) - 12. 장식 자 모드
장식 자 모델 은 대상 에 게 동태 적 으로 직책 을 증가 하 는 방식 으로 정의 한다.장식 자 모델 은 대상 자 체 를 바 꾸 지 않 는 토대 에서 프로그램 이 실행 되 는 동안 대상 에 게 동적 으로 직책 을 추가 할 수 있다.
장식 함수
JavaScript 에 서 는 어떤 대상 에 게 속성 과 방법 을 편리 하 게 확장 할 수 있 지만 특정한 함수 소스 코드 를 바 꾸 지 않 은 상태 에서 이 함수 에 추가 기능 을 추가 하 는 것 은 원 인용 을 저장 하 는 방식 으로 특정한 함 수 를 바 꿀 수 있 습 니 다. 다음 과 같 습 니 다.
window.onload = function(){ alert (1); }
var _onload = window.onload || function(){};
window.onload = function(){
_onload();
alert (2);
}
이러한 코드 는 개방 - 폐쇄 원칙 에 부합 되 고 새로운 기능 을 추가 할 때 원래 의
window.onload
코드 를 수정 하지 않 았 지만 이런 방식 에는 다음 과 같은 두 가지 문제 가 존재 한다._onload
납 치 된 문제 도 만 났 다. 이 문제 에 부 딪 혔 을 때 this
수 동 설정 Function.prototype.apply()
으로 가리 키 는 방법 은 다음 과 같다 this
.
12.2 用 AOP (面向切面编程)装饰函数
Function.prototype.before
方法和Function.prototype.after
方法实现:
Function.prototype.before = function( beforefn ){
var __self = this; //
return function(){ // " "
beforefn.apply( this, arguments ); // , this ,
// ,
return __self.apply( this, arguments ); // ,
// this
}
}
Function.prototype.after = function( afterfn ){
var __self = this;
return function(){
var ret = __self.apply( this, arguments );
afterfn.apply( this, arguments );
return ret;
}
};
2. AOP 장식 함수 로 위의 예 를 수정 합 니 다.
document.getElementById
12.3 AOP 의 응용 실례
12.4 장식 자 모드 와 에이전트 모드
대리 모델 과 장식 자 모델 의 가장 중요 한 차 이 는 그들의 의도 와 디자인 목적 에 있다.
12.5 장식 자 모드 소결
장식 함 수 는 자 바스 크 립 트 의 독특한 장식 자 모델 로 이런 모델 은 실제 개발 에서 매우 유용 하 다.또한 프레임 워 크 개발 에 도 매우 유용 하 다. 장식 자 모델 을 통 해 프레임 워 크 의 함수 에 안정 적 이 고 편리 하 게 이식 할 수 있 는 기능 을 제공한다. 이런 개성 화 된 기능 은 프레임 워 크 이외 의 동적 장식 에 있어 프레임 워 크 가 더 많은 기능 을 가지 도록 하기 위해 if, else 문 구 를 사용 하여 사용자 의 실제 수 요 를 예측 할 수 있다.
시리즈 링크
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.