JavaScript의 세터와 getter는 정상 시간에 덜 노출되는 방법입니다. 이들은 표준 방법 자체가 아니며 비이 브라우저에서만 지원됩니다 (IE 커널에서 수행 할 수있는 다른 방법이있을 수 있습니까? 당분간 솔루션을 알지 못합니다).
1. 데이터 액세스 제한 :
a.Value는 값 변수에 대한 getter 메소드 호출입니다. Getter 메소드 구현에서 예외가 발생하면 값 변수에 대한 액세스를 차단할 수 있습니다.
2. DOM 변수 듣기 :
Window.Name은 도메인에서 매우 유용한 DOM 속성입니다 (자세한 내용은 Baidu 참조). Window.Name의 Setter 구현을 무시하면 페이지에서 비동기 메모리 통신을 실현할 수 있습니다.
3. 당신의 상상력을 사용하고 많은 일을 할 수 있습니다.
다음은 모두 전송됩니다.
먼저, getters와 setter가 무엇인지, 왜 유용한지를 간단히 살펴 보겠습니다. 그런 다음 현재 GetTets 및 Setter를 지원하는 플랫폼을 살펴 보겠습니다.
게터와 세터
getters and setter를 사용하면 객체의 데이터를 신속하게 얻거나 설정할 수 있습니다. 일반적으로 객체에는 두 가지 방법이 있으며,이 방법은 다음과 같은 특정 값을 얻고 설정하는 데 사용됩니다.
{getValue : function () {return this._value;}, setValue : function (val) {this._value = val;}}이런 식으로 JavaScript를 작성하는 것의 명백한 장점 중 하나는 외부 세계에서 직접 액세스하고 싶지 않은 속성을 숨기는 데 사용될 수 있다는 것입니다. 최종 코드는 다음과 같습니다 (새로 생성 된 제출 된 객체의 값을 폐쇄로 저장) :
함수 필드 (val) {var value = val; this.getValue = function () {return value;}; this.setValue = function (val) {value = val;};}그래서 우리는 다음과 같이 사용할 수 있습니다.
var field = new Field ( "test"); field.value // => undefinedfield.setValue ( "test2") field.getValue () // => "test2"
위의 예제에서 "숨겨진 값 속성"을 시뮬레이션하겠습니다. 코드는 다음과 같습니다.
함수 필드 (val) {var value = val; this .__ definegetter __ ( "value", function () {return value;}); this .__ defineStter __ ( "value", function (vale) {value = val;});}그러나 이런 식으로 쓰는 것을 좋아하지 않으며 객체의 프로토 타입에서 getters와 setter를 정의하는 경향이 있습니다 (개인 변수가 작성되는 위치는 중요하지 않음). 다른 구문을 사용할 수 있습니다.
함수 필드 (val) {this.value = val;} field.prototype = {get value () {return this._value;}, set value (val) {this._value = val;}};이 구문은 놀랍게 보이지만 잠시 동안 사용한 후에는 쉽게 받아 들일 수 있습니다.
다음은 외부 세계가 다양한 사용자 이름을 얻을 수 있지만 원래의 숨겨진 사용자 객체를 얻을 수없는 또 다른 예입니다.
function site (user) {this .__ definegetter __ ( "user", function () {// js 1.6 array map () return user.map (function (user) {return user.name;});};}다음 사항을 기억하십시오.
객체 내에서 각 변수에는 하나의 getter 또는 setter 만 가질 수 있습니다. (따라서 가치는 getter와 setter를 가질 수 있지만 가치는 두 개의 getter를 가지고 있지 않습니다)
getter 또는 setter를 삭제하는 유일한 방법은 다음과 같습니다. 삭제는 몇 가지 공통 속성, 게터 및 세터를 제거 할 수 있습니다.
__definegetter__ 또는 __defineetter__를 사용하는 경우 이전에 정의 된 동일한 이름의 getter 또는 setter 또는 속성 (속성)을 무시합니다.
플랫폼
지원되는 브라우저는 다음과 같습니다.
파이어 폭스
사파리 3+
오페라 9.5
위는 편집자가 귀하에게 소개 한 JavaScript로 소개 된 세터 및 getter 메소드에 대한 전체 설명입니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 더 알고 싶다면 Wulin.com에주의를 기울이십시오.