JS 사용자 정의 대상 만 들 기 (공장 모드, 구조 함수 모드)
2330 단어 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
감사합니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
HttpGuardHttpGuard 는 openresty 를 기반 으로 lua 스 크 립 트 언어 로 개 발 된 cc 공격 방지 소프트웨어 입 니 다.한편, openresty 는 고성능 웹 서버 Nginx 와 일련의 Nginx 모듈 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.