使用Object.defineProperties()方法直接在一个对象上定义新的属性或修改现有属性,并返回该对象。
语法:Object.defineProperties(obj, props)
参数:
obj
在其上定义或修改属性的对象
props
要定义其可枚举属性或修改的属性描述符的对象。对象中存在的属性描述符主要有两种:数据描述符和访问器描述符(更多详情,请参阅Object.defineProperty())。描述符具有以下键:
1)configurable
true当且仅当该属性描述符的类型可以被改变并且该属性可以从对应对象中删除。默认为false
2)enumerable
true当且仅当在枚举相应对象上的属性时该属性显现。 默认为false
3)value
与属性关联的值。可以是任何有效的JavaScript值(数字,对象,函数等)。默认为 undefined.
4)writable
true当且仅当与该属性相关联的值可以用assignment operator改变时。默认为false
5)get
作为该属性的 getter 函数,如果没有 getter 则为undefined。函数返回值将被用作属性的值。默认为 undefined
6)set
作为属性的 setter 函数,如果没有 setter 则为undefined。函数将仅接受参数赋值给该属性的新值。默认为 undefined
例1. 修改obj对象的property1 和 property2,以及get方法
Object.defineProperties(obj,{
'property1':{value:true,writable:true},
'property2':{value:'Hello',writable:false},
'property3':{get:()=>{},set:()=>{}}
});
网友评论