Object.defineroperty 和Object.defineroperties
用法Object.defineroperty
给object1添加一个属性名为property1的属性
Object.defineProperty(object1, 'property1', {
configurable: fasle,
enumerable :false,
value :undefined,
writable :fasle,
get(){
return value
}
set(xxx){
value = xxx
}
});
-
configurable默认为 false。 当且仅当该属性的
configurable键值为true时,该属性的描述符才能够被改变,同时该属性也能从对应的对象上被删除。 -
enumerable默认为 false 当且仅当该属性的
enumerable键值为true时,该属性才会出现在对象的枚举属性中。 。定义了对象的属性是否可以在 [
for...in] 循环和 [Object.keys()]中被枚举。数据描述符还具有以下可选键值:
-
value默认为 undefined 该属性对应的值。可以是任何有效的 JavaScript 值(数值,对象,函数等)。
-
writable默认为 false。 当且仅当该属性的
writable键值为true时,属性的值,也就是上面的value,才能被赋值运算符改变。
存取描述符还具有以下可选键值:
-
get默认为 undefined属性的 getter 函数,如果没有 getter,则为
undefined。当访问该属性时,会调用此函数。执行时不传入任何参数,但是会传入this对象(由于继承关系,这里的this并不一定是定义该属性的对象)。该函数的返回值会被用作属性的值。 -
set默认为 undefined属性的 setter 函数,如果没有 setter,则为
undefined。当属性值被修改时,会调用此函数。该方法接受一个参数(也就是被赋予的新值),会传入赋值时的this对象。 -
如果一个描述符不具有
value、writable、get和set中的任意一个键,那么它将被认为是一个数据描述符。如果一个描述符同时拥有value或writable和get或set键,则会产生一个异常。
Object.defineroperties
和Object.defineroperty 用法类似
Object.defineroperties(object1,{
xxx这个就是把 defineroperty,的后面的两个参数包裹起来,并且可以定义多个
})