장식자 모드 시연
3861 단어 장식자 모드
이 모델 행위는 대상에게 새로운 방법을 추가하고 대상의 원인을 바꾸지 않는 방법이 있는 기초 위에서 하는 것이다.
온라인에서 찾은 예제 코드는 다음과 같습니다.
function ABicycle(){ }
ABicycle.prototype = {
wash : function(){ },
ride : function(){ },
getPrice : function(){
return 999;
}
}
function bicycleBell( bicycle ){
var price= bicycle.getPrice();
bicycle.bell = function(){
console.log("ding! ding! ding!");
};
bicycle.getPrice = function(){
return price + 100;
};
return bicycle;
}
var bicycleA = new ABicycle();
bicycleA = bicycleBell( bicycleA );
나는 함수의 방법을 사용하고 함수의 원래 구조를 바꾸고 싶었다.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title> —— </title>
<script type="text/javascript">
function a1(){
return 3;
}
function addA(aFn){
var c= aFn();
aFn = function(){
return c + 2;
}
}
// function addA(aFn){
// var c= aFn();
//
// var aFnName = aFn.name;
// eval(aFnName +' = function(){return c + 2;}');
//
// }
//
console.log(a1());
addA(a1);
console.log(a1());
</script>
</head>
<body>
</body>
</html>
코드 실행은 당연히 안 된다. 왜냐하면 함수와 숫자, 문자열은 모두 값 전달이기 때문이다.거꾸로 수조, 대상은 인용 전달.
사악한 eval로 주석을 빼면 돼.
이런 방법은 매우 나쁘다.프로그램이 예측하기 어려울 수도 있습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
장식자 모드와 향원 모드장식자 기본 개념: 장식자는 기존 시스템을 수정하는 데 사용할 수 있으며 시스템에 대상에 추가 기능을 추가하기를 원하며 대상의 베이스 코드를 수정하여 추가 기능을 추가할 필요가 없다. 장식자는 동적으로 대상을 수정할...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.