即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

[JS 基础] 对象冻结

微信 DDFE 17℃ 0评论
本文目录
[隐藏]

前言

    很多人看 Vue 2.* 版本源码的时候也会注意到频繁出现的 Object.freeze() 

    本文我们通过学习查看 MDN 的介绍做了一下个人总结并分享出来,如果会的同学就可以直接忽略。

正文

Object.freeze() 


冻结一个对象

冻结:

不能向这个对象添加新的属性

不能修改其已有属性的值

不能删除已有属性

不能修改该对象已有属性的可枚举性、可配置性、可写性


— 这个对象永远是不可变的。该方法返回被冻结的对象。


1.语法EDIT

Object.freeze(obj)

1.1.参数

    obj   将要被冻结的对象

1.2.

1.3.返回值

        被冻结的对象

2.描述EDIT

    冻结对象的所有自身属性都不可能以任何方式被修改

    数据属性的值不可更改,访问器属性(有getter和setter)也同样(但由于是函数调用,给人的错觉是还是可以修改这个属性)。

    如果一个属性的值是个对象,则这个对象中的属性是可以修改的,除非它也是个冻结对象。

3.实例

var ddfe = {

    job: “fe”

};

// 正常情况,可以操作对象的属性

ddfe.from = “beijin”;

delete ddfe.from

var o = Object.freeze(ddfe);

// 判断是否被冻结,这里返回 true

console.log(Object.isFrozen(o));

// 静默失败,obj 没有改变

obj.like = “iOS”;


参考

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/isFrozen

转载请注明:CodingBlog » [JS 基础] 对象冻结

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情
(2)个小伙伴在吐槽
  1. 赞,期待下一篇文章
    大梦一场2017-02-07 16:54 回复
  2. 没有解冻的方法咩
    Jarvis2017-02-08 04:58 回复