js 디자인 모델 제3 장
why?
원본 데이터 와 결합 하 라 고 합 니 다.
what?
대상 을 정의 하 는 세 가지 방법
1. 외부 에 완전히 노출 되 는 방법 (전통 적 인 것 을 이용 하여 함수 로 구조 함 수 를 모 의 합 니 다. 모든 속성 과 방법 이 공 개 된 Public 이기 때 문 입 니 다)
var Book = function(isbn,title,author){
this.isbn = isbn;
this.title = title;
this.author = author;
}
Book.prototype.display = function(){this.checkIsbn();....}
Book.prototype.checkIsbn = function(){}
모든 방법 이 외부 에 노출 되 어 있 습 니 다. checkIsbn 이 외부 에 노출 되 지 않 아 도 모든 속성 이 외부 에 노출 됩 니 다. isbn 속성 은 대상 이 생 성 된 후에 수정 할 수 없습니다. 그러나 이러한 방법 으로 대상 을 통 해 isbn 의 속성 을 수정 할 수 있 습 니 다.
var jsbook = new Book('9999','js','MCZ');
jsbook.isbn='8888';
2. 명명 습관 을 이용 하여 개인 변수 와 함 수 를 설명 합 니 다. 즉, '' 로 시작 하면 개인 적 인 것 을 표시 하고 대상 을 통 해 직접 방문 해 서 는 안 됩 니 다.
그러나 문제 도 분명 하 다. 이런 방법 은 강제 집행 할 수 없다.
3. 폐쇄 를 이용 하여 실현 한다.
var Book = function(isbn,title,author){
var is,ti,au;
//privileged methods
this.setIsbn = function(isbn){is=isbn;}
this.setTitle = function(title){ti=title;}
this.setAuthor = function(author){au=author;}
this.setIsbn(isbn);
this.setTitle(title);
this.setAuthor(author);
}
Book.prototype.display = function(){} //public ,non-privileged methods
장점 은 정보 숨 김 을 실현 하 는 것 입 니 다. 단점 은 대상 마다 private 와 privileged method 가 있 습 니 다. 메모 리 를 많이 소모 할 수 있 습 니 다. 또한 이 모델 은 계승 에 사용 하기 가 매우 어렵 습 니 다. 하위 클래스 는 부모 클래스 의 개인 속성 과 방법 에 접근 할 수 없 기 때 문 입 니 다.
정적 속성 과 방법
정적 속성 과 방법 은 클래스 자체 와 상호작용 을 하 는 것 으로 대상 과 무관 합 니 다. 정적 구성원 은 메모리 에 하나만 저장 합 니 다.
var Book = (function(){
//private static attributes
var numOfBooks = 0;
//private static method
function checkIsbn(isbn){}
//return the constructor
return function(newIsbn,newTitle,newAuthor){
//private attribute
var isbn,title,author;
...............
numOfBooks++;
}
})();
//public static method
Book.convertToTitleCase = function(inputString){}
클래스 의 개인, 특권 구성원 정 의 는 구조 함수 에 있 으 며, 각각 var 와 this 를 사용 합 니 다. 클래스 의 정적 구성원 정 의 는 패키지 에 있 습 니 다.
상수
상수 는 값 이 변 하지 않 는 변수 로 js 에서 폐쇄 를 통 해 이 루어 집 니 다.
var Constants = (function(){
var a = 100;
var getA=function(){return a;};
return {getA:getA};
})();
alert(Constants.getA());
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.