> 웹 프론트엔드 > JS 튜토리얼 > JavaScript의 setter 및 getter 메소드 소개

JavaScript의 setter 및 getter 메소드 소개

高洛峰
풀어 주다: 2017-01-03 17:09:03
원래의
1746명이 탐색했습니다.

JavaScript의 Setter 및 getter는 일상 생활에서 거의 사용되지 않는 메서드이며 그 자체로는 표준 메서드가 아니며 IE가 아닌 브라우저에서만 지원됩니다(예: 커널에 다른 메서드가 있을 수 있나요? 그러나 이를 사용하면 다음과 같은 많은 작업을 수행할 수 있습니다.

1. 데이터에 대한 액세스 제한:

a.value는 값 변수에 대한 getter 메서드 호출입니다. getter 메소드 구현에서 발생합니다. 예외가 발생하면 값 변수에 대한 액세스가 차단될 수 있습니다.

2. dom 변수 모니터링:

window.name은 매우 유용한 크로스 도메인입니다. dom 속성(자세한 내용은 Baidu 참조), window.name의 setter 구현을 덮어쓰면 페이지 간 메모리 비동기 통신이 가능합니다.

3. 상상력을 발휘하세요. 할 수 있는 일이 많습니다.

다음 내용을 재현합니다.
먼저 Getter와 Setter가 무엇이고 왜 유용한지 간단히 살펴보겠습니다. 그런 다음 현재 Gettets 및 Setter를 지원하는 플랫폼을 살펴보겠습니다.

Getter 및 Setter

Getter 및 Setter를 사용하면 개체의 데이터를 빠르게 가져오거나 설정할 수 있습니다. 일반적으로 개체에는 다음과 같은 특정 값을 가져오고 설정하는 데 사용되는 두 가지 메서드가 있습니다.

{
getValue: function(){
return this._value;
},
setValue: function(val){
this._value = val;
}
}
로그인 후 복사

이런 방식으로 JavaScript를 작성하면 다음과 같은 분명한 이점이 있습니다. 속성을 숨기는 데 사용할 수 있습니다. 외부인에게 직접 접근하는 것을 원하지 않습니다. 최종 코드는 다음과 같습니다(새로 생성된 Field 개체의 값을 저장하기 위해 클로저 사용).

function Field(val){
var value = val;
this.getValue = function(){
return value;
};
this.setValue = function(val){
value = val;
};
}
로그인 후 복사

따라서 다음과 같이 사용할 수 있습니다.

var field = new Field("test");
field.value
// => undefined
field.setValue("test2")
field.getValue()
// => "test2"
로그인 후 복사

위의 예에서 "숨겨진 값 속성"의 경우 코드는 다음과 같습니다.

function Field(val){
var value = val;
this.__defineGetter__("value", function(){
return value;
});
this.__defineSetter__("value", function(val){
value = val;
});
}
로그인 후 복사

그러나 이렇게 작성하는 것을 좋아하지 않지만 getter 및 setter(개인 변수)를 정의하는 것을 선호합니다. ) 객체의 프로토타입에서 어디에 작성하든 상관없습니다.) 다른 구문을 사용할 수 있습니다.

function Field(val){
this.value = val;
}
Field.prototype = {
get value(){
return this._value;
},
set value(val){
this._value = val;
}
};
로그인 후 복사

이 구문은 이상해 보일 수도 있지만, 잠시 사용해 본 후에는 쉽게 받아들일 수 있습니다.

다음은 외부 세계에서 사용자 이름 배열을 얻을 수 있지만 원래의 숨겨진 사용자 개체를 얻을 수 없는 또 다른 예입니다.

function Site(users){
this.__defineGetter__("users", function(){
// JS 1.6 Array map()
return users.map(function(user){
return user.name;
});
};
}
로그인 후 복사

다음 사항을 기억하세요.

객체에서 각 변수는 getter 또는 setter를 하나만 가질 수 있습니다. (따라서 value는 getter와 setter를 가질 수 있지만 value는 두 개의 getter를 가질 수 없습니다.)
getter나 setter를 삭제하는 유일한 방법은 object[name]을 삭제하는 것입니다. delete는 일부 공통 속성, getter 및 setter를 삭제할 수 있습니다.
__defineGetter__ 또는 __defineSetter__를 사용하면 이전에 정의된 동일한 이름의 getter 또는 setter, 심지어 속성도 재정의됩니다.

플랫폼

지원되는 브라우저는 다음과 같습니다:

Firefox
Safari 3+
Opera 9.5

위 내용은 편집자가 제공한 것입니다. 전체 지금까지 소개해드린 JavaScript의 setter와 getter 메소드에 대한 설명이 도움이 되셨으면 좋겠습니다. 더 알고 싶으시면 PHP 중국어 홈페이지를 참고해주세요.

JavaScript의 setter 및 getter 메소드 도입과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿