JS 사용자 정의 대상 만 들 기 (공장 모드, 구조 함수 모드)

2330 단어 js 코드
js 에서 사용자 정의 함수 방식 으로 대상 을 만 듭 니 다. 그 중에서 함수 와 구조 함수 의 차 이 는 구조 함수 의 이름 의 이니셜 은 대문자 입 니 다.대상 을 만 드 는 주요 방식 은 공장 모델, 구조 함수 모델, 글자 양 모델 등 이 있다.
1. 공장 모델
예시 설명 을 통 해 코드 는 다음 과 같다.
//          
function createObject(name,age){
	var obj = new Object();//    
	//    
	obj.name = name;
	obj.age = age;
	//    
	obj.sayHi = function(){
	console.log("  "+this.name+";  "+this.age);
		};
	return obj;
}
			
var per1 = createObject("  ",26);
per1.sayHi();

장점: 인 자 를 받 아들 이면 이 함 수 를 수 차례 호출 하지 않 고 Person 대상 을 만 들 수 있 으 며, 매번 세 가지 속성 을 포함 하 는 방법 을 포함 하 는 대상 을 되 돌려 줄 수 있 습 니 다.
 단점: 비슷 한 대상 을 여러 개 만 드 는 문 제 는 해 결 됐 지만 대상 인식 문 제 는 해결 되 지 않 았 다 (즉, 한 대상 의 유형 을 어떻게 아 느 냐).
2. 구조 함수 모드
예시 설명 을 통 해 코드 는 다음 과 같다.


    function Person(name,age){    //          
	    this.name = name;         //  
	    this.age = age;
	    this.sayHi=function(){    //    
	    console.log("  :"+this.name+",  "+this.age);
		    };
    }
    //           ;          ,     
    var obj = new Person("  ",11);//    
    console.log(obj.name);         //       console
    console.log(obj.age);
    obj.sayHi();                   //       


Person () 의 코드 와 createObject () 의 차이 점:
(1) 대상 을 명시 적 으로 만 들 지 않 았 습 니 다.
(2) this 대상 에 게 속성 과 방법 을 직접 부여
(3) return 문장 이 없습니다
♦Person 대상 의 새 인 스 턴 스 를 만 들 려 면 new 연산 자 를 사용 해 야 합 니 다.이런 방식 으로 구조 함 수 를 호출 하면 네 가지 절 차 를 거 친다.
(1) 새 대상 을 만 듭 니 다.
(2) 구조 함수 의 역할 영역 을 새로운 대상 에 부여 합 니 다 (따라서 this 는 이 새로운 대상 을 가리 키 고 있 습 니 다)
(3) 구조 함수 의 코드 실행 (이 새 대상 에 속성 추가)
(4) 새 대상 으로 돌아 가기
 
장점: 사용자 정의 구조 함 수 를 만 드 는 것 은 앞으로 인 스 턴 스 를 특정한 유형 으로 표시 할 수 있 음 을 의미 합 니 다. 
단점: 모든 방법 은 모든 실례 에서 다시 한 번 혁신 해 야 한다.person 1, person 2 는 모두 sayName () 이라는 방법 이 있 지만 이 두 가지 방법 은 같은 Function 의 인 스 턴 스 가 아 닙 니 다.ECMAScript 의 함수 가 대상 이기 때문에 모든 함수 가 하나의 대상 을 예화 시 켰 습 니 다.
3. 글자 크기 모드
예시 설명 을 통 해 코드 는 다음 과 같다.
var obj={
    name:"  ",
    age:20,
    sayHi:function(){
        console.log("  "+this.name);
    },
    eat:function(){
        console.log("  ");
    }
};

obj.sayHi;//        

단점: 일회 성 대상, 대상 의 속성 값 은 초기 화 할 때 고정 합 니 다.
참고:
https://www.cnblogs.com/linququ/p/8733079.html
감사합니다!

좋은 웹페이지 즐겨찾기