天天看點

ECMAScript5——對象拓展

對象可以被任意操作,添加屬性、 删除屬性、 修改屬性值

一、可擴充性

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>
           

繼續閱讀