对象可以被任意操作,添加属性、 删除属性、 修改属性值
一、可扩展性
1.1 Object.preventExtensions( ) 取消对象可扩展性
功能:不能再添加新的属性,但是可以删除属性 和 修改属性
使用方式:
Object.preventExtensions(obj)
参数:obj: 要处理的对象
1.2 Object.isExtensible( ) 查看对象是否取消了可拓展性
使用方式:
Object.isExtensible(obj)
参数:obj: 要处理的对象
<!DOCTYPE html>
<html lang="en">
<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 lang="en">
<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 lang="en">
<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>