JavaScript의 객체의 속성에는 세 가지 속성이 있습니다.
1. 쓰기 가능합니다. 이 속성은 쓰기 가능합니까?
2. 내장 가능. for/in 문을 사용할 때 속성이 열거됩니까?
3. 구성 가능. 부동산의 속성을 수정할 수 있는지 여부와 부동산을 삭제할 수 있는지 여부.
ECMAScript 3 표준에서 위의 세 가지 속성의 값은 참이며 변경 될 수 없습니다. 새로 생성 된 객체의 속성은 쓰기 가능하고 열거 가능하며 삭제할 수 있습니다. 이러한 속성을 구성하고 수정하려면 속성 개체 (속성 설명 자).
속성의 값 정보가 속성의 속성으로 사용되는 경우 객체의 속성에는 값, 쓰기 가능, 열거 가능 및 구성 가능의 4 가지 속성이 있습니다.
getter 및 setter 메소드에 의해 정의 된 속성의 경우, 쓰기 가능한 속성이 없기 때문에 (쓰기 가능한 속성은 세터 메소드가 존재하는지에 따라 다릅니다),이 속성은 4 가지 속성이 있습니다. '기능'입니다.
객체 속성의 속성을 얻으십시오
ECMAScript 5 표준에서 객체 자체의 특정 특성의 속성 정보는 Object.GetOrpropertyDescriptor ()를 통해 얻을 수 있습니다.
코드 사본은 다음과 같습니다.
var o = {x : 1};
var a = object.create (o);
ay = 3;
console.log (Object.getOrpropertyDescriptor (a, "y")); // object {configurable = true, enumerable = true, writable = true, value = 3}
console.log (Object.getOwpropertyDescriptor (a, "x"); // 정의되지 않았습니다
보시다시피, 속성이 존재하지 않거나 속성이 프로토 타입 객체에서 상속되면 정의되지 않은 것이 반환됩니다.
객체 속성의 속성을 설정하십시오
ECMAScript 5 표준에서 객체 자체의 특정 속성의 속성은 Object.DefineProperty ()를 통해 설정할 수 있습니다.
코드 사본은 다음과 같습니다.
object.defineProperty (a, "y", {
가치 : 3,
쓰기 가능 : 사실,
열거 가능 : 거짓,
구성 : 참
});
Console.log (A.propertyisEnumerable ( "y")); // false
세트 속성이 프로토 타입 객체에서 상속되면 JavaScript는 객체 자체에 동일한 이름의 속성을 생성하며, 이는 할당 작업의 관련 동작과 일치합니다.
코드 사본은 다음과 같습니다.
object.defineProperty (a, "x", {
가치 : 1,
쓰기 가능 : 사실,
열거 가능 : 거짓,
구성 : 참
});
Console.log (A.propertyisEnumerable ( "x")); // false
console.log (o.propertyiseNumerable ( "x")); // true
부동산의 속성을 수정하는 것 외에도 Getter 또는 Setter와 함께 액세스 할 수 있도록 속성을 변경할 수도 있습니다.
코드 사본은 다음과 같습니다.
object.defineProperty (a, "y", {
get : function () {return 42;}
});
Console.log (ay); // 42
Object.DefineProperty ()를 사용하는 경우 속성 설명 객체의 속성 값은 속성 값을 무시하면 JavaScript의 처리 규칙이 다음과 같습니다.
속성이 새로 생성되면 무시 된 모든 속성 값은 허위 또는 정의되지 않았습니다.
속성이 이미 존재하면 모든 무시 된 재산 값은 그대로 유지됩니다.
객체 속성의 속성을 배치로 설정하십시오
여러 속성의 속성을 한 번에 설정 해야하는 경우 Object.DefineProperties () 문을 사용할 수 있습니다. 이 명령문은 수정 된 객체를 반환합니다.
코드 사본은 다음과 같습니다.
object.defineProperties (a, {
"Y": {value : 79, Writable : True, Enumerable : true, configurable : true},
"Z": {value : 99, Writable : True, Enumerable : true, configurable : true}
});
console.log (a); // 객체 {y = 79, z = 99}
속성 속성 속성 설정 규칙
속성 속성을 수정할 때는 다음 규칙을 따라야합니다. 규칙이 위반되면 JavaScript는 TypeError 오류를보고합니다.
객체를 확장 할 수없는 경우 기존 속성의 속성 만 수정할 수 있으며 새 속성을 추가 할 수 없습니다.
속성의 구성 가능한 속성이 False 인 경우, 구성 가능한 속성 및 열거 가능한 속성의 값을 쓸 수있는 속성에 대해 수정할 수는 없지만 False에서 True로 변경 될 수 없습니다. 속성이 Getter 및 Setter에 의해 정의되면 Getter 및 Setter 메소드를 수정할 수 없습니다.
부동산의 구성 가능한 속성과 서면 속성이 모두 허위 인 경우 속성 값을 변경할 수 없습니다. 속성의 기록 가능한 속성이 False이지만 구성 가능한 속성이 참이면 속성 값을 여전히 수정할 수 있습니다.