引言
在我的上一篇文章里介绍过了对象属性描述符,没看过的同学可以在这里访问JS中的对象属性修饰符,全篇干货。本文是是对于对象属性描述符以及对象方法的一些补充。
获取属性描述符
如果用户希望获取某一特定属性,或者所有的属性描述符可以参考代码1
//代码1
let obj = {
name : 'why',
age:18,
address:'北京'
}
console.log(Object.getOwnPropertyDescriptor(obj,"name")); //{ value: 'why', writable: true, enumerable: true, configurable: true }
console.log(Object.getOwnPropertyDescriptors(obj)); //获取所有对象的属性描述符
不过像这种代码一般只有框架的源码才会出现。
对象方法的补充
下面是关于对象一些方法的补充
禁止对象继续添加新的属性
let obj = {
name : 'why',
age:18,
address:'北京'
}
//禁止对象继续添加新的属性
Object.preventExtensions(obj)
obj.height= 189
obj.address = '南京'
console.log(obj); //{ name: 'why', age: 18, address: '南京' }
禁止对象配置/禁止删除对象里面的属性
let obj = {
name : 'why',
age:18,
address:'北京'
}
Object.seal(obj)
delete obj.name //禁止删除
console.log(obj); //{ name: 'why', age: 18, address: '北京' }
for(let key in obj){
Object.defineProperty(obj,key,{
configurable:false,
enumerable:true,
})
} //这样是不行的,禁止配置
冻结对象,使其不能修改
这也就是使writable属性变为false
let obj = {
name : 'why',
age:18,
address:'北京'
}
Object.freeze(obj)
obj.name = 'lebro'
obj.address = '南京'
console.log(obj); //{ name: 'why', age: 18, address: '北京' }