JavaScript에서 객체의 확장 가능한 속성은 객체에 새로운 속성을 동적으로 추가 할 수 있는지 여부를 나타내는 데 사용됩니다. ECMAScript 3 표준에서 모든 객체는 확장 가능합니다. ECMAScript 5 표준에서 모든 객체는 기본적으로 여전히 확장 가능하지만이 속성은 설정을 통해 변경할 수 있습니다.
객체가 확장 가능한지 확인하려면 Object.isextensible () 문을 사용할 수 있습니다.
코드 사본은 다음과 같습니다.
var o = {x : 1};
console.log (object.isextensible (o)); // true
확장 할 수없는 객체를 만들려면 객체를 사용할 수 있습니다 .preventextensions () 문 :
코드 사본은 다음과 같습니다.
object.preventextensions (o)
console.log (object.isextensible (o)); // false
Object.preventExtensions ()의 역 작동 문이 없으므로 객체가 확장 불가능하게 설정되면 다시 확장 할 방법이 없다는 점에 주목할 가치가 있습니다.
object.preventextensions () 문의 범위는 객체 자체이며 프로토 타입 객체는 영향을받지 않습니다. 객체가 확장 불가능한 것으로 설정된 경우 프로토 타입 객체에 속성을 동적으로 추가 할 수 있으며 이러한 동적으로 추가 된 특성은 객체에 의해 여전히 상속 될 수 있습니다.
Object.seal () 및 Object.freeze ()
Object.preventextensions ()는 객체에 새로운 속성이 동적으로 추가되는 것을 방지합니다. 이 작업 외에도 객체를 보호하기 위해 JavaScript의 두 가지 더 엄격한 작업이 있습니다 : Object.seal () 및 Object.freeze ().
Object.seal ()의 함수는 Object.preventextensions ()에 기초하여 모든 개체 자체 속성의 구성 가능한 속성을 False로 설정하는 것입니다. 객체와 마찬가지로 preventextensions () 작동, Object.seal ()에는 수용 방지가 없으므로 씰이 봉인되면 객체를 복원 할 수 없습니다. JavaScript에서는 Object.issealed ()를 사용하여 객체가 밀봉되었는지 여부를 쿼리 할 수 있습니다.
object.freeze ()의 함수는 모든 객체의 속성을 Object.seal ()을 기반으로 읽기 전용으로 설정하는 것입니다. Object.seal () 및 object.preventextensions () 작업, Object.freeze ()는 수용 방지가 없으므로 객체가 동결되면 객체를 복원 할 수 없습니다. javaScript에서는 Object.Isfrozen ()을 사용하여 객체가 동결되었는지 여부를 쿼리 할 수 있습니다.
코드 사본은 다음과 같습니다.
console.log (object.issealed (o)); // false
대상 .seal (o);
console.log (Object.issealed (o)); // true
console.log (Object.Ifrrozen (o)); // false
대상. 피리즈 (O);
console.log (Object.Ifrrozen (o)); // true
object.preventextensions (), object.seal () 및 object.freeze ()이든 동작 범위는 객체 자체이며 객체의 프로토 타입 객체에 영향을 미치지 않습니다.