>웹 프론트엔드 >JS 튜토리얼 >ECMAScript에서 객체의 두 가지 속성에 대한 간략한 분석

ECMAScript에서 객체의 두 가지 속성에 대한 간략한 분석

不言
不言원래의
2018-07-17 14:52:421089검색

ECMAScript 객체에는 데이터 속성과 접근자 속성이라는 두 가지 속성이 있습니다. 다음으로 두 속성을 각각 분석하겠습니다.

1. 데이터 속성
데이터 속성에는 데이터 값의 위치가 포함됩니다. 이 위치에서는 값을 읽고 쓸 수 있습니다. 데이터 속성에는 해당 동작을 설명하는 4가지 속성이 있습니다.
[ [ Configurable ] ] 삭제를 통해 속성을 삭제하여 속성을 재정의할 수 있는지, 속성의 특성을 수정할 수 있는지, 접근 속성으로 속성을 수정할 수 있는지를 나타냅니다. 기본값은 true
[ [ Enumerable] ] for-in 루프를 통해 속성을 반환할 수 있는지 여부를 나타냅니다. 기본값은 속성 값을 수정할 수 있는지 여부를 나타내는 true
[ [ Writable ] ]입니다. 기본값은 true
[ [ 값 ] ] 이 속성의 속성 값을 포함합니다. 속성을 읽을 때는 이 위치에서 읽고, 속성을 쓸 때는 이 위치에 새 값을 저장합니다. 기본값은 정의되지 않음
예:

var p = {};
Object.defineProperty(p, "name", {
    writable: false,
    value: 'nihao' 
})

2. 접근자 속성
접근자 속성에는 접근자 속성을 읽을 때 getter 및 setter 함수 쌍이 포함되어 있습니다(단, 이 두 함수는 필수는 아닙니다). 호출되며 이 함수는 유효한 값을 반환하는 역할을 합니다. 접근자 속성을 작성할 때 setter 함수가 호출되고 새 값이 전달됩니다. 이 함수는 데이터 처리 방법을 결정합니다. [ [ Configurable ] ]은 속성을 삭제하여 속성을 재정의할 수 있는지 여부를 나타냅니다. 삭제하고 속성의 특성을 수정할 수 있는지 여부를 확인합니다. 아니면 액세스 속성으로 변경할 수 있나요? 기본값은 true
[ [ Enumerable] ] for-in 루프를 통해 속성을 반환할 수 있는지 여부를 나타냅니다. 기본값은 true
[ [ Get ] ] 속성을 읽을 때 호출되는 함수, 기본값은 정의되지 않음
[ [ Set ] ] 속성을 쓸 때 호출되는 함수, 기본값은 정의되지 않음
예:

var p = {get: 0};
Object.defineProperty(p, "name", {
    get: function (){
        console.log('get');
        return this.get;
    },
    set: function (newVal) {
        console.log('set');
        this.get = newVal;
    }
})
3.

Object.getOwnPropertyDescriptor(속성이 위치한 객체, 속성 이름)
반환 값은 configurable, enumerable, get 및 set의 네 가지 속성에 액세스하는 객체입니다.
숫자 속성인 경우 반환됩니다. 객체 속성은 구성 및 열거 가능, 쓰기 가능, 값 4개 속성입니다.
설명: Object.defineProperties() 함수는 여러 속성을 정의할 수 있습니다.
예:

var p = {get: 0};
Object.defineProperties(p, {"name", {
    get: function (){
        console.log('get');
        return this.get;
    },
    set: function (newVal) {
        console.log('set');
        this.get = newVal;
    }
}, "age": {
       writable: true,
       value: 11
   }
})

관련 권장 사항:


ECMAScript 5의 속성 설명자에 대한 자세한 설명_기본 지식

위 내용은 ECMAScript에서 객체의 두 가지 속성에 대한 간략한 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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