JavaScript 개인 구성원 분석

대상 자 바스 크 립 트 작업 은 모두 대상 에 관 한 것 입 니 다.배열(Array)은 대상 이 고 함수(Function)는 대상 이다.Object(유형)는 대상 입 니 다.그렇다면 대상 은 무엇 일 까?대상 은'이름-값'대(name-value)입 니 다.이름 은 문자열 입 니 다.값 은 문자열,수치,불 값 또는 대상(배열 과 함수 포함)일 수 있 습 니 다.대상 은 항상 해시 표 로 이 루어 지기 때문에 수치 채취 속도 가 매우 빠르다.대상 의 값 이 함수(function)라면 구성원 함수 라 고 볼 수 있 습 니 다.구성원 함수 가 호출 될 때 this 변 수 는 이 대상 을 가리 킵 니 다.구성원 함 수 는 this 변 수 를 통 해 대상 의 구성원 에 게 접근 할 수 있 습 니 다.대상 은 구조 기(constructor)를 통 해 생 성 될 수 있 으 며 구조 기 는 초기 화 대상 의 함수 입 니 다.구조 기 는 여기 서 다른 언어 에서'클래스'가 맡 은 역할 을 하고 static 변수 와 방법 을 정의 하 는 수단 도 제공 했다.퍼 블 릭 멤버 대상 의 모든 멤버 는 공개 멤버 로 누구나 읽 고 쓰 거나 삭제 하거나 새 멤버 를 추가 할 수 있다.새 멤버 를 추가 하 는 방법 은 두 가지 가 있 습 니 다.구조 기 에 공 개 된 멤버 변 수 를 초기 화 하 는 데 사 용 됩 니 다.구조 기의 this 변 수 를 이용 하여 구성원 을 대상 에 추가 합 니 다.function Container(param) { this.member = param;} 다음 줄 코드 로 대상 인 스 턴 스 var my Container=new Container(abc)를 만 듭 니 다.my Container 의 member 구성원 값 은 abc 입 니 다.원형 에 이런 방법 을 추가 하면 공개 멤버 함 수 를 추가 하 는 데 자주 쓰 인 다.Javascr 로īpt 해석 기 는 대상 의 구성원 을 만 나 대상 자체 에 이 구성원 이 존재 하지 않 는 다 는 것 을 발견 하면 대상 구조 함수 의 원형 에서 찾 습 니 다.원형 체 제 는 계승 을 실현 하 는 데 쓸 수 있다.그것 역시 메모 리 를 점용 한다.어떤 구조 함수 가 생 성 된 모든 대상 에 게 방법 을 추가 하려 면 대상 의 원형 에 이 방법 을 추가 하면 된다.Container.prototype.stamp = function (string) { return this.member + string;} 이렇게 하면 이 구성원 함수 my Container.stamp('def')를 호출 하여 값'abcdef'를 되 돌려 줍 니 다.개인 구성원,개인 구성원 은 구조 기 에서 생 긴 것 이다.var 가 정의 하 는 변수 와 구조 기의 매개 변 수 는 개인 구성원 이 됩 니 다.function Container(param){ this.member = param; var secret = 3; var that = this; } 이 구조 기 는 param,secret,self 세 개의 개인 변 수 를 정의 합 니 다.이들 속성 대상 Container 는 대상 밖의 코드 나 대상 의 공개 방법 에 접근 할 수 없습니다.개인 적 인 방법 만 접근 할 수 있다.개인 적 인 방법 은 구조 기 에서 정의 하 는 함수 입 니 다.function Container(param){ function dec() { if (secret > 0) { secret -= 1; return true; } else { return false; } } this.member = param; var secret = 3; var that = this;} 개인 적 인 방법 dec 는 인 스 턴 스 변수 secret 의 값 을 검사 합 니 다.0 이상 이면 값 을 줄 이 고 true 로 돌아 갑 니 다.그렇지 않 으 면 false 로 돌아 갑 니 다.그것 은 이 대상 을 세 번 만 사용 할 수 있 도록 제한 하 는 데 쓸 수 있다.프로 토 콜 에 따라 우 리 는 개인 적 인 방법 으로 대상 자 체 를 방문 할 수 있 도록 개인 변수 that 를 정의 했다.이것 은 융통성 있 는 해결 방안 으로 그것 이 필요 한 근본 적 인 원인 은 ECMAscr 에 있다.īpt 언어 규범 의 오류 입 니 다.이 오류 로 인해 내부 함수 의 this 변수 가 잘못 되 었 습 니 다.(honker:that 를 쓰 지 않 아 도 괜 찮 을 것 같 아 요.원문 을 너무 일찍 썼 나 봐 요.어떤 고위 층 이 이런 문 제 를 겪 었 나 요?)사유 방법 은 공개 적 인 방법 으로 호출 될 수 없다.사유 함 수 를 유용 하 게 하기 위해 서 는 특권 방법의 개념 을 도입 해 야 한다.특권 특권 방법 은 개인 변수 와 방법 에 접근 할 수 있 으 며,그 자체 가 공개 적 인 방법 과 외부 에 접근 할 수 있다.특권 방법 을 삭제 하거나 교체 할 수 있 지만 그것 을 바 꾸 거나 자신의 비밀 을 포기 하도록 강요 해 서 는 안 된다.특권 방법 은 구조 함수 가 this 를 통 해 정의 하 는 function Container(param){function dec(){if(secret>0){secret-=1;return true; } else { return false; } } this.member = param; var secret = 3; var that = this; this.service = function () { if (dec()) { return that.member; } else { return null; } };} 서 비 스 는 특권 적 인 방법 이다.my Container.service()를 세 번 호출 하면 abc 로 돌아 가 고 null 로 돌아 갑 니 다.service 는 개인 적 인 dec 방법 을 호출 하고 dec 방법 은 개인 적 인 secret 변 수 를 방문 합 니 다.서 비 스 는 다른 대상 과 함수 에 대해 모두 볼 수 있 지만,우 리 는 private 구성원 을 직접 방문 할 수 없습니다.폐쇄 는 폐쇄 적 인 내 가 있 기 때문에 공개 적 이 고 사유 적 이 며 특권 적 인 방법 을 쓰 는 것 이 가능 하 다.이것 은 내부 함수 가 항상 외부 함수 가 정의 하 는 변수 와 매개 변 수 를 방문 한 다 는 것 을 의미한다.외층 함수 가 되 돌아 와 도.자 바스 크 입 니 다.īpt 의 매우 강력 한 특성아직 자바 스 크 립 트 가 없습니다.īpt 프로 그래 밍 의 책 은 그것 을 어떻게 이용 하 는 지 에 대해 대부분 언급 하지 않 았 다.사유 와 특권 구성원 은 대상 이 구 조 될 때 만 생 성 된다.공개 멤버 는 언제든지 추가 할 수 있다.쓰기 Public function Constructor(...){this.membername=value;}Constructor.prototype.membername = value; Private function Constructor(...) { var that = this; var membername = value; function membername(...) {...} } Note: The function statement function membername(...) {...} is shorthand for var membername = function membername(...) {...}; Privileged function Constructor(...) { this.membername = function (...) {...}; }

좋은 웹페이지 즐겨찾기