undeepfreeze

更新时间:2023-01-02 03:04:04 阅读: 评论:0


2023年1月2日发(作者:午后薰衣茶)

()冻结对象

1.作⽤(六不能,三可性,⼀但是)

(obj1);//对对象进⾏冻结

()⽅法可以冻结⼀个对象,冻结后的对象不能进⾏修改,不能对改对象添加新的属性,不能删除已有属性,不能修改该对象已

有属性的可枚举性,可配置性,可写性,已经不能修改已有属性的值,该对象的原型也不能被修改。若没有进⾏深层次冻结,则对象的属性

若是对象,则该对象的属性可以修改。

freeza返回和传⼊的参数相同的对象

2.使⽤⽅法

对象的例⼦

obj1={

a:1,

obj2:{

b:2,

c:3

}

}

(obj1.a);//1

(2.b);//2

(obj1);

obj1.a=777;//对冻结后的对象的属性进⾏修改

2.a=88888;//没有深层次的冻结对深层次的属性进⾏修改

(obj1.a);//1此时可以看到a已经被冻结了

(2.a);//此时结果为88888已经被修改了

可以得出:被冻结的属性不能进⾏修改,对对象进⾏冻结⼀次,不会对深层次的对象进⾏冻结。

数组中只有数字的例⼦

//对数组对象进⾏冻结以后,数组对象中的内容则不能改变

arr1=[1,2,3,4]

(arr1[1]);//2

(arr1);

arr1[1]=22222;

arr1[0]=1111111;

(arr1[0]);//1

(arr1[1]);//2

得出:被冻结的值不能进⾏改变

数组中含有对象

//数组中含有对象

arr2=[

{a:1},

{b:2},

{c:3}

]

(arr2[0].a);//1

(arr2);

arr2[0].a=1111111;

(arr2[0].a);//1111111没有被修改

可以得出:数组中的对象被冻结以后,对象就被冻结了

数组中对象的嵌套

//数组中含有对象

arr2=[

{a:1},

{b:2},

{

c:{

d:3

}

}

]

(arr2[0].a);//1

(arr2[2]);

(arr2[2].c);

(arr2[2].c.d+"数组中对象的徐对象的测试");

(arr2);

arr2[0].a=1111111;

arr2[2].c.d=77777

(arr2[0].a);//1111111没有被修改

(arr2[2]);

(arr2[2].c);

(arr2[2].c.d+"对数组中的对象进⾏了冻结");//7777777被修改了

得出:只进⾏浅层次的冻结,数组中对象的对象没有被冻结,还可以修改

3.:深度冻结(递归)

//深度进⾏冻结回调冻结

functiondeepFreeze(obj){

//获取对象的全部属性

letobjNames=PropertyNames(obj);

//此时的getOwnPropertyNames属性是获取对象的全部属性名

(objNames);//输出的结果是⼀个obj属性名的字符串数组

//对每个属性进⾏遍历如果属性是对象且不为空就将他冻结

h(function(name){

//这⾥⽤到了es6的属性表达式如obj.a=obj["a"]

letprop=obj[name];

(prop);

//在这⾥对每个属性进⾏判断判断是否为对象

if(typeofprop=='object'&&prop!==null){

//如果是则递归进⾏下⼀层

deepFreeze(prop);

}

})

//冻结

(obj);

}

obj3={

a:{

c:{

d:111111

}

}

}

(obj3);

("冻结前的结果"+obj3.a.c.d);//冻结前的结果111111

deepFreeze(obj3);

("冻结后的结果"+obj3.a.c.d);//冻结后的结果111111

本文发布于:2023-01-02 03:04:04,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/90/75984.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:站起来 歌词
下一篇:美女减肥记
标签:undeepfreeze
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图