>웹 프론트엔드 >JS 튜토리얼 >JavaScript setter 및 getter에 대한 자세한 설명

JavaScript setter 및 getter에 대한 자세한 설명

小云云
小云云원래의
2018-01-05 13:28:013075검색

이 글은 주로 JavaScript의 setter 및 getter 메소드를 자세히 소개합니다. 관심 있는 친구들이 참고하면 도움이 될 것입니다.

저는 프로젝트를 작성할 때 Javascript의 setter 및 getter 메소드를 사용해 본 적이 없기 때문에 이해해야 할 개념입니다. 오늘 책에서 이 지식 포인트를 보았지만 여전히 모호하므로 공부하기로 결정했습니다. 연구

Javascript 개체의 속성은 이름, 값 및 속성 집합으로 구성됩니다. 먼저 객체의 두 가지 속성을 살펴보겠습니다.

우리가 자주 사용하고 익숙해야 하는 데이터 속성
접속자 속성이라고도 하는 접근자 속성

접속자 속성이란 무엇입니까? 값을 가져오고 설정하는 함수 집합입니다. ECMAScript5에서는 하나 또는 두 개의 메서드를 사용하여 속성 값을 설정할 수 있으며, 두 메서드는 getter와 setter이므로 getter와 setter에 의해 정의된 속성을 접근자 속성이라고 합니다.


var o = {
  get val(){
    /*函数体*/
    return ;
  },
  set val(n){
    /*函数体*/
  }
}

위는 접근자 속성을 정의하는 가장 간단한 방법입니다. getter 및 setter 메소드는 실제로 함수를 대체하는 함수임을 알 수 있습니다.


var o = {
  a:3,
  get val(){
    return Math.pow(this.a,2);
  }
}

console.log(o.val);//9
o.val = 100;
console.log(o.val);//9

getter 메소드에는 매개변수가 없고 반환 값이 있습니다. getter 메소드가 별도로 설정되면 속성 값만 가져올 수 있고 정의된 속성 값을 변경할 수 없으므로 데이터 보안이 보장됩니다.

var o = {
  a:3,
  set val(n){
    this.a = n;
  }
}

console.log(o.val);//undefined

setter 메소드에는 매개변수가 있고 반환 값이 없습니다. setter 메소드만 단독으로 설정하면 속성 값을 읽을 수 없습니다.

var o ={
  a:3,
  get val(){
    return Math.pow(this.a,n);
  },
  set val(n){
    this.a = Math.max(this.a,n);
  }
}

console.log(o.a);//3
console.log(o.val);//9
o.val = 10;
console.log(o.a);//10
console.log(o.val);//100

위 코드에서 볼 수 있듯이 이는 해당 객체( 이는 코드의 "o"입니다.

var o ={
   a:3,
  get val(){
    return Math.pow(this.a,n);
  },
  set val(n){
    this.a = Math.max(this.a,n);
  }
}

o.val = 10;
var foo = Object.create(o);
console.log(foo.val);//10
foo.val = 9;
console.log(foo.val);//10

또한 접근자 속성도 상속될 수 있습니다.

관련 권장 사항:

Javascript의 getter 및 setter에 대한 기본 소개

JavaScript setter를 사용하는 것이 좋지 않은 이유는 무엇입니까?

JavaScript에서 getter/setter 구현의 샘플 코드 공유

위 내용은 JavaScript setter 및 getter에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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