>웹 프론트엔드 >JS 튜토리얼 >속성 설명자 사용 예

속성 설명자 사용 예

DDD
DDD원래의
2023-12-06 14:31:451487검색

Property Descriptor는 JavaScript에서 객체의 속성을 설명하는 데 사용되는 중요한 개념입니다. 속성 설명자를 사용하면 개체의 속성을 가져오고, 수정하고, 만들 수 있습니다. 다음은 속성 설명자를 사용하는 몇 가지 예입니다.

예제 1: 속성의 속성 설명자 가져오기

속성 이름이 있는 person 개체가 있다고 가정하고 Object.getOwnPropertyDescriptor() 메서드를 사용하여 속성을 가져올 수 있습니다. of this property Descriptor:

let person = {  
  name: 'Alice'  
};  
  
let desc = Object.getOwnPropertyDescriptor(person, 'name');  
  
console.log(desc);  
// 输出:  
//   {  
//     value: 'Alice',  
//     writable: true,  
//     enumerable: true,  
//     configurable: true,  
//     get: undefined,  
//     set: undefined  
//   }

위 코드에서 Object.getOwnPropertyDescriptor(person, 'name')은 person 개체의 name 속성을 설명하는 속성 설명자가 포함된 개체를 반환합니다.

예 2: 속성 설명자를 사용하여 새 속성 만들기

속성 설명자를 사용하여 새 속성을 만들 수 있습니다. 예를 들어, person 개체에 age라는 새 속성을 생성한다고 가정해 보겠습니다.

let person = {};  
  
Object.defineProperty(person, 'age', {  
  value: 25,  
  writable: true,  
  enumerable: true,  
  configurable: true,  
  get: function() { return this._age; },  
  set: function(newVal) { this._age = newVal; }  
});  
  
console.log(person.age); // 输出:25

위 코드에서 Object.defineProperty(person, 'age', { ... })는 age라는 새 속성을 정의하고 다음을 사용합니다. 이를 설명하는 속성 설명자입니다. 이제 person.age에 액세스할 수 있으며 person.age를 설정하여 age 속성 값을 수정할 수 있습니다.

예 3: 속성 설명자를 사용하여 기존 속성 수정

또한 속성 설명자를 사용하여 기존 속성의 속성 설명자를 수정할 수도 있습니다. 예를 들어, person 객체의 name 속성에 대한 속성 설명자를 수정한다고 가정해 보겠습니다.

let person = {  
  name: 'Alice'  
};  
  
Object.defineProperty(person, 'name', {  
  value: 'Bob',  
  writable: true,  
  enumerable: true,  
  configurable: true,  
  get: function() { return this._name; },  
  set: function(newVal) { this._name = newVal; }  
});  
  
console.log(person.name); // 输出:'Bob'

위 코드에서는 Object.defineProperty() 메서드를 사용하여 person 객체의 name 속성에 대한 속성 설명자를 수정합니다. . 이제 person.name에 액세스할 수 있으며 person.name을 설정하여 name 속성 값을 수정할 수 있습니다. 이 예에서는 속성의 값 속성을 수정했으며 이로 인해 속성의 실제 값도 변경되었습니다.

위 내용은 속성 설명자 사용 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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

관련 기사

더보기