1.Object.seal就是封闭某个对象,主要就是两点:
1)阻止添加新属性;
2)现有属性变得不可配置(non-configurable)
第一点比较好理解,就是不能给对象设置未知属性,举个例子来说:
var person = {
};
Object.seal(person);
person.name= '111'
console.log(person) //output: {}
我们来解释一下第二点,不可被配置,那么就是设置对象属性的configuration为false:
Object.defineProperty(person, 'name', {
configurable: false
})
然后会起到如下作用:
1、不可以通过delete去删除该属性从而重新定义属性;
2、不可以转化为访问器属性;
3、configurable和enumerable不可被修改;
4、writable可单向修改为false,但不可以由false改为true;
5、value是否可修改根据writable而定。
下面我们可以来一一验证:
1)
// 这个时候我们把person.name的configurable设置为false,
// 这个时候我们执行delete person.name,并没有删除掉name,
// 仍然输出{name: 'cheny'}
var person = {
};
Object.defineProperty(<

本文详细探讨了JavaScript中Object.seal和Object.freeze的区别与作用。Object.seal主要特点是阻止添加新属性并使现有属性不可配置,不允许删除属性、转换为访问器属性,以及修改configurable和enumerable。而Object.freeze则更进一步,完全禁止对对象进行任何修改,包括属性值的修改,确保对象状态不可变。
2941

被折叠的 条评论
为什么被折叠?



