Getter는 속성의 값을 얻는 방법이며 Setter는 속성 값을 설정하는 방법입니다. Getter 및 Setter 메소드는 사전 정의 된 핵심 객체 또는 사용자 정의 객체에 대해 정의 될 수 있으며 기존 객체에 새 속성을 추가합니다.
getter 또는 setter 메소드를 정의하는 두 가지 방법이 있습니다.
1. 객체 초기화 시점을 정의하십시오
2. 객체가 정의 된 후, 정의는 오브젝트의 __defineGetter__ 및 __defineetter__ 메소드를 통해 추가됩니다.
객체 초기화 프로세스를 사용하여 Getter 및 Setter 메소드를 정의 할 때해야 할 유일한 방법은 Getter 메소드에서 "Get"을 접두사하고 Setter 메소드에서 "SET"을 접두하는 것입니다.
주목해야 할 또 다른 사항은 Getter 메소드에 매개 변수가 없으며 Setter 메소드에는 매개 변수, 즉 설정 할 속성의 새 값이 있어야한다는 것입니다.
예를 들어:
코드 사본은 다음과 같습니다.
o = {
가치 : 9,
get b () {return this.value;},
set setter (x) {this.value = x;}
}
객체가 정의 된 후 객체에 getter 또는 setter 메소드를 추가하면 두 가지 특수 방법 __definegetter__ 및 __defineetter__가 사용됩니다. 이 두 기능은 문자열에 주어진 Getter 또는 Setter의 이름이 먼저 필요하며 두 번째 매개 변수는 Getter 또는 Setter로 기능합니다.
예를 들어 날짜 개체에 연도 속성을 추가합니다.
코드 사본은 다음과 같습니다.
date.prototype .__ definegetter __ ( 'year', function () {return this.getlyear ();});
date.prototype .__ 정의 세터 __ ( '년', 함수 (y) {this.setlyear (y)});
var now = 새로운 날짜;
경고 (지금. 세일);
지금 .year = 2006;
경고 (지금);
어떤 형식을 채택 해야하는지는 주로 개인의 프로그래밍 스타일에 따라 다릅니다. 첫 번째 형태는 작고 이해하기 쉽습니다. 그러나 객체가 정의 된 후 Getter 또는 Setter를 추가하려면이 객체의 프로토 타입이 귀하가 작성하지 않았거나 내장되어 있지 않으려면 두 번째 방법을 사용해야합니다.
다음은 Mozilla 브라우저에 내 텍스트 속성을 추가하는 구현입니다.
코드 사본은 다음과 같습니다.
htmlelement.prototype .__ definegetter__
(
"InnerText", function ()
// 내부 텍스트의 값을 얻기 위해 getter 메소드를 정의하십시오.
// 지금 읽을 수 있습니다!
{
var textrange = this.ownerDocument.CreateRange ();
// 범위를 사용하여 객체의 내용을 검색합니다
textrange.selectnodecontents (this);
// 객체 노드의 내용 만 가져옵니다
Textrange.toString ()을 반환합니다.
// 노드 컨텐츠의 값을 내부 텍스트에 제공합니다
}