36 \ # 3 대상 깊이 - 구조 함수 와 new 명령

2943 단어
대상 지향 프로 그래 밍 '대상 지향 프로 그래 밍' (Object Oriented Programming, 줄 임 말 OOP) 은 현재 주류 프로 그래 밍 패 러 다 임 으로 전통 적 인 대상 지향 프로 그래 밍 언어 (자바 c + +) 와 는 다 르 지만 자 바스 크 립 트 는 대상 지향 프로 그래 밍 능력 이 강하 다.
모든 대상 은 기능 중심 이 고 명확 한 분업 을 가 지 며 정 보 를 받 아들 이 고 데 이 터 를 처리 하 며 정 보 를 보 내 는 등 임 무 를 수행 할 수 있 습 니 다. 대상 을 대상 으로 프로 그래 밍 하 는 것 은 유연성, 코드 의 중용 성, 모듈 성 등 특징 을 가지 고 유지 하고 개발 하기 쉬 우 며 여러 사람 이 합작 하 는 대형 소프트웨어 프로젝트 에 매우 적합 합 니 다.
구조 함수 '대상 지향 프로 그래 밍' 의 첫 번 째 단 계 는 '대상' 자 바스 크 립 트 의 대상 체 계 를 생 성 하 는 것 입 니 다. 구조 함수 (constructor) 와 프로 토 타 입 체인 (prototype) 자 바스 크 립 트 의 대상 지향 프로 그래 밍 은 '프로 토 타 입 대상' 을 기반 으로 합 니 다.
구조 함수 의 서법 은 일반적인 함수 var Vehicle = function () {this. price = 1000;} 이다.위의 코드 에서 Vehicle 은 구조 함수 로 템 플 릿 을 제공 하여 대상 인 스 턴 스 를 생 성 합 니 다.
*          ,                  (          )
*         this   ,            (         )

new 명령 [new 구조 함수 반환 대상 인 스 턴 스; new 일반 함수 반환 {} new 인 스 턴 스 없 음] new 명령 의 역할 은 구조 함 수 를 실행 하고 인 스 턴 스 대상 var Vehicle = function () {this. price = 1000;} 을 되 돌려 주 는 것 입 니 다.
var v = new Vehicle(); v. price / / 1000 이 new 명령 을 사용 할 때 필요 에 따라 구조 함수 도 매개 변수 var Vehicle = function (p) {this. price = p;} 을 받 아들 일 수 있 습 니 다.
var v = new Vehicle(500); new 명령 자체 가 구조 함 수 를 실행 할 수 있 기 때문에 뒤의 구조 함 수 는 괄호 를 달 수도 있 고 괄호 var v = new Vehicle () 을 가지 지 않 아 도 된다.var v = new Vehicle; 다른 한편, 일반 함수 (내부 에 this 키워드 가 없 는 함수) 에 new 명령 을 사용 하면 빈 대상 function getMessage () {return 'this is a message' 를 되 돌려 줍 니 다.}
var msg = new getMessage();
msg / / {} typeof msg / / "Object" 는 또 다른 한편, new 명령 을 사용 하지 않 으 면 구조 함 수 는 일반 함수 로 취급 되 며 대상 인 스 턴 스 var Vehicle = function () {this. price = 1000; / this 는 Vehicle 함수 의 호출 자} 를 생 성하 지 않 습 니 다.
var v = Vehicle();// v. Vehicle 함수 의 반환 값 undefined 가 저 장 됩 니 다.
v.price// Uncaught TypeError: Cannot read property 'price' of undefined price// 1000
new 명령 의 원 리 는 new 명령 을 사용 할 때 그 뒤의 함수 호출 은 정상 적 인 호출 이 아니 라 다음 절 차 를 순서대로 실행 합 니 다.
1.        
2.          ,       prototype  
3.               this   
4.              
5.   this--     

즉, 구조 함수 내부 에서 this 는 새로 생 성 된 빈 대상 을 말 합 니 다. this 에 대한 모든 조작 은 이 빈 대상 에서 구조 함수 가 '구조 함수' 라 고 부 르 는 이 유 는 이 함수 의 목적 은 바로 빈 대상 (즉 this 이미지) 을 조작 하여 '구조' 를 필요 한 모습 으로 하 는 것 입 니 다.
구조 함수 에 return 이 있 는 경우 구조 함수 내부 에 return 문구 가 있 고 return 문 구 는 this 와 무관 한 새로운 대상 new 명령 을 되 돌려 주 는 것 입 니 다. 이 점 은 특히 주의해 야 합 니 다. 그 밖 에 return 문 구 를 관리 하지 않 고 this 대상 var Vehicle = function () {this. price = 1000; return {price: 2000};};new Vehicle () / / Object {price: 2000} var Vehicle = function () {this. price = 1000; return 1000;};new Vehicle () / / 생 성 대상 인 스 턴 스 를 되 돌려 줍 니 다.
new. target (알 아 보기) 모든 함수 내 부 는 new. target 속성 을 사용 할 수 있 습 니 다. 현재 함수 가 new 명령 호출 이 라면 new. target 은 현재 함 수 를 가리 키 고 그렇지 않 으 면 undefined 입 니 다.function f() { console.log(new.target === f); }
new f() // true f() // false

좋은 웹페이지 즐겨찾기