> 웹 프론트엔드 > JS 튜토리얼 > javascript:the good parts_javascript 팁에서 발췌한 기능적 상속 패턴

javascript:the good parts_javascript 팁에서 발췌한 기능적 상속 패턴

WBOY
풀어 주다: 2016-05-16 18:05:51
원래의
897명이 탐색했습니다.

이 모드의 역할은 객체 속성이 실제로 사유화되도록 하는 것입니다. 객체의 상태에 직접 액세스할 수 없으며 권한 있는 메서드를 통해서만 작동할 수 있습니다.
직접 예를 들어보겠습니다. >

코드 복사 코드는 다음과 같습니다. var person = function(cfg) {
var that = {};
that .getName = function() {
return cfg.name || '알 수 없는 이름'
}// 성별 기본 남성
that.getGender = function() {
return cfg .gender || '남성'
return that
}
var 프로그래머 = function(cfg),
share = {};
share.status = 'normal';
that.getFamiliarLanguage = function() {
return (cfg.langs || []).join(' ');
} ;
that.getProfile = function() {
return '안녕하세요. 내 이름은 that.getName()입니다.
}
that.getStatus = function() {
return share .status;
that.setStatus = function(status) {
share.status =
}; 🎜>var me = 프로그래머({
이름: 'AndyZhang',
성별: '남성',
// 익숙한 언어 ​​
langs: ['javascript', 'java', ' php']
});
console.debug(me.getFamiliarLanguage());
console.debug(me.getProfile())
me.setStatus('아 정말 바쁘네요.. ');
console.debug(me.getStatus());


코드에서 볼 수 있듯이 프로그래머 메소드를 호출할 때 new를 사용하지 않으며 this
this.name = cfg.name과 같은 속성 할당 코드가 있는 경우 new를 사용하여 호출하면(생성자 호출 메서드) 생성된 객체의 name 속성이 더 이상 표시되지 않습니다. 예:




코드 복사

코드는 다음과 같습니다.


// 여기서 메소드 이름의 첫 글자는 new Call
var Person = function(cfg) { this.name = cfg.name; this.gender = cfg를 사용하는 생성자임을 나타내기 위해 대문자로 표시됩니다. 성별; } // new person1 var person1 = new Person({ 이름: '앤드류', 성별: '남성'
}); / 원래는 이름과 성별을 비공개로 만들고 비슷한 setter getter 메서드를 사용하고 싶었습니다. javaBean
alert(person1.name) // 'Andrew'
alert(person1.gender) // 'male'


위의 예에서 person1의 속성에 직접 액세스할 수 있음을 알 수 있지만 때로는 이를 나타내기 위해 코드 사양이나 규칙을 사용합니다. 우리가 정의하는 특정 속성은 비공개입니다. 예를 들어 this._name은 이름을 나타내기 위해 이런 방식으로 작성됩니다. 속성은 비공개입니다. 개인적으로는 타사 js 라이브러리에서 이것이 통합되는 한 좋은 방법이라고 생각합니다. , 이 메소드는 YUI2
와 같이 더 자주 사용될 수 있습니다. 초기 코드를 계속 살펴보면 이것이 사용되지 않지만 프로그래머 메소드에서 person을 호출한 후 그 역할을 볼 수 있습니다. , 그 사람이 가지고 있는 getName 및 getGender 메소드를 반환합니다. 그런 다음 프로그래머의 특정 요구 사항을 기반으로 확장합니다. 물론 프로그래머의 공유 메소드를 덮어쓸 수도 있습니다. 일부 개인 변수 및 메소드를 중앙 집중화합니다. JavaScript의 범위 및 폐쇄 메커니즘을 통해 코드의 that.getStatus 및 that.setStatus 메소드와 같이 확장된 메소드에서 처리 및 호출될 수 있습니다. .
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿