java class is frozen_Object构造函数的方法 之 Object.isFrozen()

Object.isFrozen()

判断一个对象是否被冻结

obj

被检测的对象。

返回值

表示是否被冻结(Boolean)。

描述

一个对象是冻结的是指它不可扩展,所有属性都是不可配置的,且所有数据属性(即没有getter或setter访问器的属性)都是不可写的。

// 一个对象默认是可扩展的,所以它是非冻结的

console.log(Object.isFrozen({})) // false

// 一个不可扩展的空对象同时也是一个冻结对象

const result = Object.preventExtensions({})

console.log(Object.isFrozen(result)) // true

// 一个非空对象默认也是非冻结的

const obj = {

p: 42

}

console.log(Object.isFrozen(obj)) // false

// 让一个对象变得不可扩展,并不意味着这个对象变成了冻结对象。

// 因为p属性仍然是可以配置的(而且是可写的)

Object.preventExtensions(obj)

console.log(Object.isFrozen(obj)) // false

// 此时,如果删除了这个属性,则它会成为一个冻结对象。

delete obj.p

console.log(Object.isFrozen(obj)) // true

// 一个不可扩展的对象,拥有一个不可写但可配置的属性,则它仍然是非冻结的

const obj1 = {

p: 42

}

Object.preventExtensions(obj1)

Object.defineProperty(obj1, 'p', { // 变得属性不可更改

writable: false

})

console.log(Object.isFrozen(obj1)) // false

// 把这个对象设置为不可配置,会让这个对象变成冻结对象

Object.defineProperty(obj1, 'p', { // 变得不可配置,属性符不能更改

configurable: false

})

console.log(Object.isFrozen(obj1)) // true

// 一个不可扩展的对象,拥有一个不可配置但可写的属性,则它仍然是非冻结的。

const obj2 = {

p: 42

}

Object.preventExtensions(obj2)

Object.defineProperty(obj2, 'p', { // 变得不可配置,属性符不能更改

configurable: false

})

console.log(Object.isFrozen(obj2)) // false

//那这个属性改为不可写。会让这个对象成为冻结对象

Object.defineProperty(obj2, 'p', { // 不可改

writable: false

})

console.log(Object.isFrozen(obj2)) // true

// 一个不可扩展的对象,值拥有一个访问器属性,则它仍然是非冻结的

const obj3 = {

get p() {

return 42

}

}

Object.preventExtensions(obj3)

console.log(Object.isFrozen(obj3)) // false

// 但是把这个属性改为不可配置,则会让这个对象变成冻结对象

Object.defineProperty(obj3, 'p', { // 变得不可配置,属性符不能更改

configurable: false

})

console.log(Object.isFrozen(obj3)) // true

// 使用Object.freeze 是冻结一个对象最方便的方法

const obj4 = {

p: 42

}

console.log(Object.isFrozen(obj4)) // false

Object.freeze(obj4)

console.log(Object.isFrozen(obj4)) // true

// Object.isSealed() 判断一个对象是否被密封

// 一个冻结对象也是一个密封对象

console.log(Object.isSealed(obj4)) // true

// Object.isExtensible 判断一个对象是否是可扩展的

// 当前更是一个不可扩展的对象

console.log(Object.isExtensible(obj4)) // false

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值