>  기사  >  웹 프론트엔드  >  JavaScript_javascript 기술의 객체 확장 가능 속성 소개

JavaScript_javascript 기술의 객체 확장 가능 속성 소개

WBOY
WBOY원래의
2016-05-16 16:23:181176검색

JavaScript에서 개체의 확장 가능 속성은 새 속성을 개체에 동적으로 추가할 수 있는지 여부를 나타내는 데 사용됩니다. ECMAScript 3 표준에서는 모든 객체가 확장 가능합니다. ECMAScript 5 표준에서는 모든 객체가 기본적으로 여전히 확장 가능하지만 이 속성을 설정하여 변경할 수 있습니다.

객체의 확장 가능 여부를 쿼리하려면 Object.isExtensible() 문을 사용할 수 있습니다.


코드 복사 코드는 다음과 같습니다.

var o = {x:1};
console.log(Object.isExtensible(o));//true


객체를 확장 불가능하게 만들려면 Object.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로 설정하는 것입니다. Object.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
Object.seal(o);
console.log(Object.isSealed(o));//true
console.log(Object.isFrozen(o));//false
Object.freeze(o);
console.log(Object.isFrozen(o));//true


Object.preventExtensions(), Object.seal() 및 Object.freeze()이든 해당 범위는 객체 자체이며 객체의 프로토타입 객체는 영향을 받지 않습니다.

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