Object.isFrozen()은 객체가 동결됐는지를 결정합니다.

구문

Object.isFrozen(obj)

매개변수

obj
확인되어야 하는 객체.

설명

객체는 확장 불가이며 모든 속성이 설정 불가 및 모든 데이터 속성(즉, getter 또는 setter 요소가 있는 접근자 속성이 아닌 속성)이 쓰기 불가인 경우에만 동결됩니다.

// 새로운 객체는 확장 가능해서 동결되지 않습니다.
Object.isFrozen({}); // === false

// 확장 불가인 빈 객체는 빈 채로 동결됩니다.
var vacuouslyFrozen = Object.preventExtensions({});
Object.isFrozen(vacuouslyFrozen); // === true

// 속성이 하나 있는 새 객체도 확장 가능하므로 동결되지 않습니다.
var oneProp = { p: 42 };
Object.isFrozen(oneProp); // === false

// 객체 확장을 막아도 여전히 동결되지 않습니다,
// 속성이 여전히 설정 가능(및 쓰기 가능)하기에.
Object.preventExtensions(oneProp);
Object.isFrozen(oneProp); // === false

// ...그렇지만 그 속성 삭제는 객체를 빈 채로 동결되게 합니다.
delete oneProp.p;
Object.isFrozen(oneProp); // === true

// 쓰기 불가지만 여전히 설정 가능한 속성이 있는 확장 불가 객체는 동결되지 않습니다.
var nonWritable = { e: 'plep' };
Object.preventExtensions(nonWritable);
Object.defineProperty(nonWritable, 'e', { writable: false }); // 쓰기 불가로 함
Object.isFrozen(nonWritable); // === false

// 그 속성을 설정 불가로 바꾸면 객체를 동결되게 합니다.
Object.defineProperty(nonWritable, 'e', { configurable: false }); // 설정 불가로 함
Object.isFrozen(nonWritable); // === true

// 설정 불가지만 여전히 쓰기 가능 속성이 있는 확장 불가 객체도 동결되지 않습니다.
var nonConfigurable = { release: 'the kraken!' };
Object.preventExtensions(nonConfigurable);
Object.defineProperty(nonConfigurable, 'release', { configurable: false });
Object.isFrozen(nonConfigurable); // === false

// 그 속성을 쓰기 불가로 바꾸면 객체를 동결되게 합니다.
Object.defineProperty(nonConfigurable, 'release', { writable: false });
Object.isFrozen(nonConfigurable); // === true

// 설정 가능 접근자 속성이 있는 확장 불가 객체는 동결되지 않습니다.
var accessor = { get food() { return 'yum'; } };
Object.preventExtensions(accessor);
Object.isFrozen(accessor); // === false

// ...하지만 그 속성을 설정 불가로 하면 동결됩니다.
Object.defineProperty(accessor, 'food', { configurable: false });
Object.isFrozen(accessor); // === true

// 하지만 동결되는 객체를 위한 가장 쉬운 방법은 객체에 Object.freeze가 호출된 경우입니다.
var frozen = { 1: 81 };
Object.isFrozen(frozen); // === false
Object.freeze(frozen);
Object.isFrozen(frozen); // === true

// 정의에 의해, 동결된 객체는 확장 불가입니다.
Object.isExtensible(frozen); // === false

// 또한 정의에 의해, 동결된 객체는 봉인됩니다.
Object.isSealed(frozen); // === true

주의

ES5에서, 이 메서드의 인수가 비객체(원시형)인 경우, 그러면 TypeError가 발생합니다. ES6에서, 비객체 인수는 마치 동결된 보통 객체였던 것처럼 취급됩니다, 그저 true를 반환하는.

Object.isFrozen(1);
// TypeError: 1은 객체가 아닙니다 (ES5 코드)

Object.isFrozen(1);
// true                          (ES6 코드)

스펙

스펙 상태 설명
ECMAScript 5.1 (ECMA-262)
The definition of 'Object.isFrozen' in that specification.
Standard 초기 정의. JavaScript 1.8.5에서 구현됨.
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Object.isFrozen' in that specification.
Standard  
ECMAScript Latest Draft (ECMA-262)
The definition of 'Object.isFrozen' in that specification.
Draft  

브라우저 호환성

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support 6 4.0 (2.0) 9 12 5.1
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support ? ? ? ? ? ?

참조

문서 태그 및 공헌자

이 페이지의 공헌자: Netaras
최종 변경: Netaras,