Js中Object.freeze()方法
Object.freeze方法的作用
Object.freeze()是ES5新增的特性,Object.freeze() 方法可以冻结一个对象。一个被冻结的对象再也不能被修改;冻结了一个对象则不能向这个对象添加新的属性,不能删除已有属性,不能修改该对象已有属性的可枚举性、可配置性、可写性,以及不能修改已有属性的值。此外,冻结一个对象后该对象的原型也不能被修改。freeze() 返回和传入的参数相同的对象。
Object.freeze方法冻结对象有如下特点:
(1).对象不能被扩展,也就是不能添加新的属性与方法。
(2).对象属性不能被删除。
(3).对象属性值也不能被改变。
(4).对象属性的可枚举性、可读写性与可配置性都不能修改。
Object.freeze的使用
Object.freeze(object)object:必需。在其上锁定特性的对象。
传递给函数的对象。
如果 object 参数不是对象,则将引发 TypeError 异常。
例子
将对象冻结,使用Object.freeze方法
const foo = Object.freeze({});
// 常规模式时,下面一行不起作用;
// 严格模式时,该行会报错
foo.prop = 123;var t = { a:{ t:2 } } //冻结t对象下属性a Object.freeze(t) t.a.t = 3 //不能冻结属性a下的值obj中的对象 console.log(t.a.t) //3
除了将对象本身冻结,对象的属性也应该冻结。下面是一个将对象彻底冻结的函数。
var constantize = (obj) => {
Object.freeze(obj);
Object.keys(obj).forEach( (key, i) => {
if ( typeof obj[key] === 'object' ) {
constantize( obj[key] );
}
});
};本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!