JS Object. preventExtensions (), Object. seal () 과 Object. freeze () 용법 사례 분석
기본 소개
Method
Description
Param
Detail
Object.preventExtensions()
대상 을 확장 할 수 없 게 만 드 는 것 은 영원히 새로운 속성 을 추가 할 수 없다 는 것 이다.
Object
상세 하 다.
Object.isExtensible()
대상 이 확장 가능 한 지 판단 하기
Object
상세 하 다.
Object.seal()
대상 을 밀봉 하고 밀봉 한 대상 으로 되 돌려 줍 니 다.밀봉 대상 은 새로운 속성 을 추가 할 수 없고 기 존 속성 을 삭제 할 수 없 으 며 기 존 속성의 매 거 성, 설정 성, 쓰기 성 을 수정 할 수 없 지만 기 존 속성의 값 을 수정 할 수 있 는 대상 을 말한다.
Object
상세 하 다.
Object.isSealed()
대상 이 밀봉 되 었 는 지 아 닌 지 를 판단 하 다.
Object
상세 하 다.
Object.freeze()
대상 을 동결 하고 동 결 된 대상 으로 되 돌아 갑 니 다.동결 대상 은 새로운 속성 을 추가 할 수 없고 기 존 속성의 값 을 수정 할 수 없 으 며 기 존 속성 을 삭제 할 수 없 으 며 기 존 속성 을 수정 할 수 없 는 매 거 성, 설정 성, 쓰기 가능 한 대상 을 말한다.이 상 대 는 영원히 변 할 수 없다 는 것 이다.
Object
상세 하 다.
Object.isFrozen()
대상 이 동결 되 었 는 지 여 부 를 판단 하 다.
Object
상세 하 다.
2. Object. preventExtensions ()
Object. preventExtensions 는 한 대상 이 더 이상 자신의 속성 을 추가 하지 못 하 는 것 을 막 을 수 있 을 뿐 이 대상 의 원형 에 속성 을 추가 할 수 있 습 니 다.
2.1 preventExtensions () 설정
var jb51 = {
name: "zuojj"
};
Object.preventExtensions(jb51);
jb51.url = "https://www.jb51.net";
//Outputs: undefined
console.log(jb51.url);
2.2 엄격 한 모드 에서 사용 하면 오류 발생
그러나 엄격 한 모델 에서 오 류 를 보고 할 수 있다.
"use strict";
var jb51 = {
name: "zuojj"
};
Object.preventExtensions(jb51);
jb51.url = "https://www.jb51.net";
//Outputs: Uncaught TypeError: Can't add property url, object is not extensible
console.log(jb51.url);
2.3 속성 을 확장 할 수 없 지만 존재 하 는 속성 값 을 변경 할 수 있 습 니 다.
var jb51 = {
name: "zuojj"
};
Object.preventExtensions(jb51);
jb51.url = "https://www.jb51.net";
//Outputs: Uncaught TypeError: Can't add property url, object is not extensible
console.log(jb51.url);
2.4 기 존 속성 삭제 (delete) 를 막 을 수 없습니다
var jb51 = {
name: "jb51",
url : "https://www.jb51.net"
};
Object.preventExtensions(jb51);
delete jb51.url;
//Outputs: {name: "jb51"}
console.log(jb51);
2.5 Object. defineProperty 방법 을 사용 하여 확장 할 수 없 는 대상 에 게 새로운 속성 을 추가 하면 이상 이 발생 합 니 다.
var jb51 = {
name: "jb51"
};
Object.preventExtensions(jb51);
jb51 = Object.defineProperty(jb51, "url", {value: "https://www.jb51.net" });
//Outputs: Uncaught TypeError: Cannot define property:url, object is not extensible.
console.log(jb51);
2.6 대상 의 확장 여 부 를 판단 합 니 다.
var jb51 = {
name: "jb51",
url : "https://www.jb51.net"
};
Object.preventExtensions(jb51);
//Outputs: false
console.log(Object.isExtensible(jb51));
2.7 동결 대상 과 밀 폐 된 대상 은 모두 확장 불가 대상
var jb51 = {
name: "jb51"
},
sealed = Object.seal(jb51),
frozen = Object.freeze(jb51);
//Outputs: false false
console.log(Object.isExtensible(sealed), Object.isExtensible(frozen));
3. Object. seal ()
3.1 속성 을 추가 할 수 없 지만 속성 값 을 변경 할 수 있 습 니 다.
var jb51 = {
name: "zuojj",
url: "https://www.jb51.net"
};
Object.seal(jb51),
jb51.sex = "male";
jb51.name = "jb51";
//Outputs: {name: "jb51", url: "https://www.jb51.net"}
console.log(jb51);
3.2 엄격 한 모델 에서 사용 하면 오류 가 발생 한다.
3.3 delete 기 존 속성 삭제 불가
var jb51 = {
name: "jb51",
url: "https://www.jb51.net"
};
Object.seal(jb51),
delete jb51.name;
//Outputs: {name: "jb51", url: "https://www.jb51.net"}
console.log(jb51);
3.4 Object. defineProperty 대상 속성 확장 불가
var jb51 = {
name: "jb51",
url: "https://www.jb51.net"
};
Object.seal(jb51);
Object.defineProperty(jb51, "sex", {value: "male"})
//Outputs: Uncaught TypeError: Cannot define property:sex, object is not extensible.
console.log(jb51);
위 에서 밀봉 대상 은 확장 할 수 없다 고 말 했 기 때문에 잘못 보고 할 수 있다.
3.5 대상 이 밀봉 대상 인지 판단
// .
var empty = {};
//Outputs: false
console.log(Object.isSealed(empty));
// && === .
Object.preventExtensions(empty);
//Outputs: true
console.log(Object.isSealed(empty));
// && , .
var hasProp = { fee: "fie foe fum" };
Object.preventExtensions(hasProp);
//Outputs: false
console.log(Object.isSealed(hasProp));
// , .
Object.defineProperty(hasProp, "fee", { configurable: false });
//Outputs: true
console.log(Object.isSealed(hasProp));
console.log("-------------");
// , .
var s1 = {};
Object.seal(s1);
//Outputs: true
console.log(Object.isFrozen(s1));
var s2 = Object.seal({ p: 3 });
//Outputs: false
console.log(Object.isFrozen(s2)); // "p"
4. Object. freeze ()
4.1 속성 을 추가 할 수 없고 속성 값 을 수정 할 수 없습니다
var obj = {
name: "jb51",
url: "https://www.jb51.net"
};
Object.freeze(obj);
obj.sex = "male";
obj.name = "zuojj";
//Outputs: {name: "jb51", url: "https://www.jb51.net"}
console.log(obj);
4.2 엄격 한 모델 에서 사용 하면 오류 가 발생 한다.
4.3 delete 기 존 속성 삭제 불가
var obj = {
name: "jb51",
url: "https://www.jb51.net"
};
Object.freeze(obj);
delete obj.name;
//Outputs: {name: "jb51", url: "https://www.jb51.net"}
console.log(obj);
4.4 대상 동결 여부 판단
var obj = {
name: "jb51",
url: "https://www.jb51.net"
};
Object.freeze(obj);
//Outputs: true
console.log(Object.isFrozen(obj));
호환성
Object. preventExtensions (), Object. isExtensible (), Object. seal (), Object. isSealed (), Object. freeze (), Object. isFrozen () 방법 은 ES5 규범 의 일부분 이 며 IE8 및 이하 저 버 전 브 라 우 저 는 지원 되 지 않 습 니 다.Oprea 는 지원 하지 않 습 니 다.
관심 있 는 친 구 는 온라인 HTML / CSS / JavaScript 코드 실행 도 구 를 사용 할 수 있 습 니 다.http://tools.jb51.net/code/HtmlJsRun상기 js 코드 를 테스트 실행 합 니 다.
자 바스 크 립 트 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.
본 고 에서 말 한 것 이 여러분 의 자 바스 크 립 트 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.