JS 객체 지향 --OOP

사물                                                                                  

  모든 JS는 같은 객체 것이 이해 될 수있다 여기서 배열 , 함수 , 객체 , 등등

클로저                                                                                  

1. 정의 및 원리

  바인딩 클로저 (일반적 기능) 이러한 환경 변수의 많은 변수와 표현을 가지고

  폐쇄 범위 체인 외부 및 전역 변수에 액세스 할 수있는 내부 기능을 이용하여 변수, 외부 함수 내부 변수 함수에 액세스 할 수없는

  따라서, 함수 내의 함수의 정의는, 함수 내의 함수는 함수 내부 변수에 액세스하고, 변수가 메모리에 저장된

 

  F2는 F1에 따라 n은 F2에 대한 글로벌 변수 다음 예는, 다음 (실제로 F1)을 실행하므로, 해당 메모리에 저장되어 계속 허가되지

  nAdd 기능을 실행 한 후, N은 1000가된다

. (1)  함수 F1 () {
 2      VAR의 N- = 999 ]
 . (3)      Nadd = 함수 () {
 4.          N- = N- + 1이다. ]
 . 5      }
 . 6      함수 F2 () {
 7.          경고 (N-)
 . 8      }
 . 9      복귀 F2;
 10  }
 . 11  VAR = A F1 ()
 (12)는 , A는 () // 999 팝 
13이고  ; Nadd ()
 14 A (); // 팝업 1,000

 2. 용도

  함수 내부 폐쇄 로컬 변수를 사용하는 함수를 판독하고, 함수 내 국소 변수이므로 메모리에 저장된

3. 장점과 단점

  장점 : 캡슐화 강한 지역 변수

  단점 : 지역 변수 긴 메모리, 경향 메모리 누수에

꾸러미                                                                                  

1. 정의 및 원리

  객체의 내부 데이터 및 운영 세부 사항은 특별 액세스 인터페이스의 대상 밖에, 숨겨진

  JS, 폐쇄 패키지를 사용하는 효과를 달성

  함수에서 로컬 변수를 중첩 기능에 액세스하는 기능 구현 방법은, 호출 특권 방법

. (1)  함수 F1 () {
 2      VAR N = 1이다. ]
 . 3      // F2 함수는 사용자가 기능하지 않음, 특권위한 방법의 외부 액세스 할 수 어디 
. (4)      이 본 .f2 = 함수 () {
 5.          CONSOLE.LOG (++ N);
 6      }
 7      // 다음에있어서 동등한 
. 8      함수 F2 () {
 9.          CONSOLE.LOG (++ N-),
 (10)      }
 . 11      리턴 F2;
 12된다  }
 13은  VAR의 A = F1 ()
 14 A ();

2. 단점

  패키지는 상속, 도움이 메모리를하지 않습니다 차지

선언적 오브젝트                                                                

문자 (1)

  직접 객체를 선언하고있는 속성 이름 {} 속성 값 함수 (방법) 물품 VAR

  속성 이름은 따옴표를 필요로하는 곳에 있습니다

1  VAR의 MyInfo를 = {
 2      '이름' 'qtfy' ,
 3      '나이'24 ,
 4      '취미' 함수 () {
 5          CONSOLE.LOG ( "I 노래를 좋아한다" );
6      }
 7 }
zimian

2. 생성자

  성명 개체 개체로 구성 바르, 다음 개체의 이름으로 속성과 메소드를 추가합니다. 이름 = 속성 값을 속성

1 개  var에 하여 MyObj = 개체 ();
2 myobj.name = 'qtfy' ;
3 myobj.age = 24 ;
4 myobj.hobby = 함수 () {
 5      CONSOLE.LOG가 ( "I 노래를 좋아한다" );
6 }
createfunction

3. 생성자

  함수 및 변수의 정의는,이 함수의 내부 기능을 의미 파라미터는 속성 값을 추가로 전달

  정의되면, 기능은 예를 구축

1 개  기능 테스트 (이름, 나이, 취미) {
 2       .name을 = 이름;
3       .age = 나이;
4       .interest = 함수 () {
 5          CONSOLE.LOG은 (+ '취미는' 취미);
6      }
 7  }
 8  VAR의 사람 = 새로운 테스트 ( 'qtfy', 24 '노래');
createfunction2

4. 공장 패턴

  함수, VAR 개체 개체 내부의 구성 함수 선언의 정의합니다. 개체 이름을 통해 개체를 제공하는 속성과 메소드를 추가 이름 = 속성 값을 속성, 그리고 마지막으로 객체를 반환

  이것은 입력 파라미터 일 수되는 흰색 상자로서 인식하고, 일련의 반환한다 같은 속성 이름 , 상기 방법은 개체, 개체 간의하지만 서로 독립적으로 , 상관 없다

1 개  기능 CreateObject를 (이름, 나이, 취미) {
 2      VAR OBJ = 개체 ();
3      obj.name = 이름;
4      obj.age = 나이;
5      obj.interest = 함수 () {
 6          CONSOLE.LOG은 (+ '취미는' 취미);
7      }
 8      복귀 OBJ;
9  }
 10  VAR의 사람 = CreateObject를 ( 'qtfy', 24 '노래');
공장 모드

프로토 타입 모델

  기능 함수 프로토 타입 속성 기능, 방법으로 빈에 속성을 추가, 빈 (null의 방법)를 정의

  객체를 생성하기 위해, var 문으로 함수의 인스턴스를 생성

1  함수 CreateObject를 () {}
 2 createObject.prototype.name = 'qtfy' ;
3 createObject.prototype.age = 24 ;
4 createObject.prototype.hobby = 함수 () {
 5      CONSOLE.LOG는 ( 'I 노래 LIKE' );
6  }
 7  VAR의 사람 = 새로운 CreateObject를 ();
프로토 타입 모드

  또한, 함수 비어 (비어 방식)의 정의는 빈 함수의 속성 이름과 값으로, 키 - 값 쌍의 형태로 객체를 전달하는 프로토 타입 속성을 사용할 수있다

  이 방법은 호출 JSON 데이터를 (한 문자열로, 에 관계없이 키의 따옴표로 묶어야합니다 )

1 개  기능 테스트 () {}
 2 test.prototype = {
 3      '이름' 'qtfy' ,
 4      '나이' '24' ,
 5      '취미' '노래'
 6 }
JSON 데이터

6. 혼합 모드

  생성자는 기능이 기능으로 상기 현 지점을 생성하기 위해 전달 된 파라미터 할당 속성 값

  그런 다음 프로토 타입 모델, 기능에 추가하는 방법

  마지막 인스턴스는 객체를 생성하는 기능을 구축

1 개  기능 테스트 (이름, 나이) {
 2       .name을 = 이름;
3       .age = 나이;
4  }
 5 test.prototype.hobby = 함수 () {
 6      CONSOLE.LOG는 ( '취미가 노래' );
7  }
 8  VAR의 사람 = 새로운 테스트 ( 'qtfy', 24);
혼합 모드

 

개체 탐색 및 저장                                                            

객체를 통과하십시오

  K 문 난에 대한 개체로 통과 할

  각 개체의 난에있어서의 이름 / 속성 명이고, k는 오브젝트 이름

  가능한 K [i]는 각각의 속성 값 / 방법에 대한 액세스 코드를 정의

2. 객체는 메모리에 저장된

  메모리는 메모리 스택, 힙, 코드 세그먼트 및 데이터 세그먼트로 분할

  스택 메모리의 개체의 이름을 저장, 힙 메모리는 객체 주소의 포인트는

  개체의 속성 (이름 / 값)과 메소드 이름, 메소드 이름이 가리키는 조각의 힙 메모리에 저장

  오브젝트 코드 세그먼트 특정 코드에있어서

추천

출처www.cnblogs.com/shige720/p/11274840.html