>웹 프론트엔드 >JS 튜토리얼 >__defineGetter__ 및 __defineSetter___javascript 팁에 대한 참고 사항

__defineGetter__ 및 __defineSetter___javascript 팁에 대한 참고 사항

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB원래의
2016-05-16 19:13:451078검색

작성자: anbutu
출처: http://anbutu.javaeye.com/blog/post/194276
키워드: JavaScript Mozilla __defineGetter__ __defineSetter__

Getter는 속성 값을 가져오는 메서드입니다. Setter는 속성의 값을 설정하는 방법입니다. 사전 정의된 핵심 개체 또는 사용자 정의 개체에 대해 getter 및 setter 메서드를 정의하여 기존 개체에 새 속성을 추가할 수 있습니다.
Getter 또는 Setter 메서드를 정의하는 방법에는 두 가지가 있습니다.

객체가 초기화되는 시기 정의
객체가 정의된 후 Object의 __defineGetter__ 및 __defineSetter__ 메서드를 통해 정의를 추가합니다.
객체를 사용할 때 Getter 및 Setter 메서드를 정의하기 위해 초기화 프로세스 중에 수행해야 할 유일한 작업은 getter 메서드 앞에 "get"을 추가하고 setter 메서드 앞에 "set"을 추가하는 것입니다.
또 주목해야 할 점은 getter 메소드에는 매개변수가 없으며 setter 메소드에는 설정할 속성의 새 값인 하나의 매개변수가 있어야 한다는 것입니다.
예:

코드 복사 코드는 다음과 같습니다.

o = {        🎜> 값:9,
get b() {return this.value;},
set setter(x) {this.value = x;}
}

객체가 정의된 후 객체에 getter 또는 setter 메서드를 추가하려면 __defineGetter__ 및 __defineSetter__라는 두 가지 특수 메서드가 필요합니다. 이 두 함수에서는 첫 번째 매개변수가 문자열로 제공되는 getter 또는 setter의 이름이고 두 번째 매개변수가 getter 또는 setter인 함수여야 합니다.
예를 들어 Date 개체에 연도 속성을 추가합니다.


코드 복사 코드는 다음과 같습니다. 다음은 다음과 같습니다.
Date.prototype.__defineGetter__('연도', function() {return this.getFullYear();})
Date.prototype.__defineSetter__('연도', function( y) {this.setFullYear(y)});

var now = new Date
alert(now.year)
now.year = 2006; ;


어떤 형식을 주로 사용할지는 개인의 프로그래밍 스타일에 따라 다릅니다. 첫 번째 형식은 간결하고 이해하기 쉽습니다. 그러나 객체가 정의된 후에 Getter 또는 Setter를 추가하려는 경우 또는 이 객체의 프로토타입이 사용자가 작성한 것이 아니거나 내장 객체인 경우에는 두 번째 방법을 사용해야 합니다.
다음은 Mozilla 브라우저에 innerText 속성을 추가하는 구현입니다.



HTMLElement.prototype.__defineGetter__                                                                      읽을 수 있습니다 이제!                                                    Contents(this)
/ /객체 노드의 콘텐츠만 가져옵니다
return texturing.tostring () ;
// 노드 내용의 값을 innertext에 제공
}
)


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.