Object 객체 defineProperty() 메서드

2726 단어

구문

Object.defineProperty(obj, prop, descriptor)

매개 변수


매개 변수
묘사
obj
속성을 정의할 객체입니다.
prop
정의하거나 수정할 속성의 이름 또는 Symbol입니다.
descriptor
정의하거나 수정할 속성 설명자입니다.

묘사


이 방법은 대상의 속성을 정확하게 추가하거나 수정할 수 있습니다.값 부여 작업을 통해 추가된 일반 속성은 열거할 수 있으며 개체 속성을 열거할 때 (((for...in 또는 Object.keys 방법) 으로 열거될 수 있으며, 이러한 속성의 값을 바꾸거나 삭제할 수 있습니다.이 방법은 기본 추가 옵션 (또는 설정) 을 수정할 수 있습니다.기본적으로 Object가 사용됩니다.defineProperty()에 추가된 속성 값은 수정할 수 없습니다(immutable).
대상에 현재 존재하는 속성 묘사부호는 두 가지 주요 형식이 있는데 그것이 바로 이다.
  • 데이터 설명자는 값이 있는 속성으로 이 값은 쓸 수도 있고 쓸 수도 없다.
  • 액세스 설명자는 Getter 함수와setter 함수에 의해 기술된 속성입니다.

  • 하나의 묘사부호는 단지 이 둘 중의 하나일 수 있다.동시에 둘 수는 없다. Object.defineProperty()
    두 설명자는 모두 객체이며 다음과 같은 선택적 키 값을 공유합니다.
  • configurable은 이 속성의 configurable 키 값이true일 때만 이 속성의 설명자가 바뀔 수 있고 해당 대상에서 삭제될 수 있습니다.기본값은 false
  • 입니다.1.configurable:true
    //  , ,
    //  false ,
    //  , 。
    var obj = {};
    Object.defineProperty(obj, "name", {
      configurable: false
    });
    Object.defineProperty(obj, "name", {
      configurable: true //  
    });
    console.log(obj); // TypeError: Cannot redefine property: name
    
    2.
    var obj = {};
    Object.defineProperty(obj, "name", {
      enumerable: true,
      configurable: false
    });
    delete obj.name;
    console.log(obj); // { name: undefined }
    
  • enumerable는 이 속성의 enumerable 키 값이true일 때만 대상의 매거 속성에 나타난다.기본값은 false 매거진 가능 입니다. 예를 들어, Object.keys()、Object.values()
  • var obj = {};
    
    Object.defineProperty(obj, "name", {
      enumerable: false, 
      configurable: true
    });
    
    console.log(obj); // {}
    

    데이터 설명자에는 다음과 같은 선택적 키 값도 있습니다.
  • value 이 속성에 대응하는 값입니다.유효한 JavaScript 값(수치, 객체, 함수 등)이 될 수 있습니다.기본값은 undefined
  • 입니다.
    var obj = {};
    Object.defineProperty(obj, "name", {});
    console.log(obj); // { name: undefined }  :undefined
    
  • writable은 이 속성의 writable 키 값이true일 때만 속성의 값(value)을 부여받을 수 있습니다.기본값은 false
  • 입니다.
    var obj = {};
    Object.defineProperty(obj, "name", {
      enumerable: true
    });
    obj.name = "zhangsan";
    console.log(obj); // { name: undefined } writable:false 
    

    액세스 설명자에는 다음과 같은 옵션 키 값도 있습니다.
  • get 속성의 Get 함수입니다. Getter가 없으면 undefined입니다.이 속성에 접근할 때 이 함수를 호출합니다.실행할 때 매개 변수는 전송되지 않지만,this 대상은 전송됩니다. (계승 관계로 인해this는 반드시 이 속성을 정의하는 대상은 아닙니다.)이 함수의 반환 값은 속성의 값으로 사용됩니다.기본값은 undefined
  • 입니다.
  • set 속성의 setter 함수입니다. setter가 없으면 undefined입니다.속성 값이 수정되면 이 함수가 호출됩니다.이 방법은 매개 변수 (즉 부여된 새 값) 를 받아들여 부여할 때의this 대상을 전달합니다.기본값은 undefined
  • 입니다.

    좋은 웹페이지 즐겨찾기