對象可以被任意操作,添加屬性、 删除屬性、 修改屬性值
一、可擴充性
1.1 Object.preventExtensions( ) 取消對象可擴充性
功能:不能再添加新的屬性,但是可以删除屬性 和 修改屬性
使用方式:
Object.preventExtensions(obj)
參數:obj: 要處理的對象
1.2 Object.isExtensible( ) 檢視對象是否取消了可拓展性
使用方式:
Object.isExtensible(obj)
參數:obj: 要處理的對象
<!DOCTYPE html>
<html >
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script type="text/javascript">
// 定義對象
var obj = {
a: 1,
b: 2
}
// 此時obj中的屬性,可以被任意操作 ,添加屬性、 删除屬性、 修改屬性值
// 添加屬性
// obj.c = 3;
// // 删除屬性
// delete obj.a;
// // 修改屬性
// obj.b = 5;
// ES5定義了取消可拓展性的方法 // 不能再添加新的屬性了。
// Object.preventExtensions(obj);
// 嘗試添加屬性
// obj.c = 3;
// // 輸出
// console.log(obj)
// 檢視obj是否取消了可拓展性
console.log(Object.isExtensible(obj))
</script>
</body>
</html>
二、封閉
2.1 Object.seal( ) 對象封閉
功能:對象封閉之後, 可以修改屬性, 但不能拓展添加屬性, 也不能删除屬性
使用方式:
Object.seal(obj)
參數:obj: 要處理的對象
2.2 Object.isSealed( ) 檢視對象是否封閉
使用方式:
Object.isSealed(obj)
參數:obj: 要處理的對象
<!DOCTYPE html>
<html >
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script type="text/javascript">
// 定義對象
var obj = {
a: 1,
b: 2
}
// 此時obj中的屬性,可以被任意操作 ,添加屬性、 删除屬性、 修改屬性值
// 添加屬性
// obj.c = 3;
// // 删除屬性
// delete obj.a;
// // 修改屬性
// obj.b = 5;
// ES5 為對象拓展了一個封閉的方法
Object.seal(obj)
// 封閉之後, 可以修改, 但不能拓展, 也不能删除屬性。
// 檢視對象是夠封閉
console.log(Object.isSealed(obj))
</script>
</body>
</html>
三、當機
3.1 Object.freeze( ) 對象當機
功能:對象封閉之後,不能拓展添加屬性,不能修改屬性,也不能删除屬性
使用方式:
Object.freeze(obj)
參數:obj: 要處理的對象
3.2 Object.isFrozen( ) 檢視對象是否當機
使用方式:
Object.isFrozen(obj)
參數:obj: 要處理的對象
<!DOCTYPE html>
<html >
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script type="text/javascript">
// 定義對象
var obj = {
a: 1,
b: 2
}
// 此時obj中的屬性,可以被任意操作 ,添加屬性、 删除屬性、 修改屬性值
// 添加屬性
// obj.c = 3;
// // 删除屬性
// delete obj.a;
// // 修改屬性
// obj.b = 5;
// ES5為對象提供了當機方法
Object.freeze(obj)
// 總結: 當對象處于當機狀态時候, 不能添加屬性、 不能删除屬性、 也不能修改屬性值
// 檢視obj 是否處于當機狀态
Object.isFrozen(obj)
</script>
</body>
</html>