Object.defineProperty 笔记

var a= {} Object.defineProperty(a,"b",{ value:123 }) console.log(a.b);//123
Object.defineProperty有三个参数

一个参数:目标对象编码

第二个参数:须要定义的属性或方法的名字。spa

第三个参数:目标属性所拥有的特性。(descriptor)code

descriptor

他又如下取值,对象

value:属性的值ip

writable:若是为false,属性的值就不能被重写,只能为只读了get

configurable:总开关,一旦为false,就不能再设置他的(value,writable,configurable)string

enumerable:是否能在for...in循环中遍历出来或在Object.keys中列举出来。it

get:获取值io

set:设置值console

当咱们只设置了 value,别的并无设置,可是 第一次的时候能够简单的理解为(暂时这样理解)它会默认帮咱们把writable,configurable,enumerable。都设上值,并且值还都是false,下面你再想设置,就会报错

想用(get 和 set),就不能用(wriable 或 value中的任何一个)
var a= {} Object.defineProperty(a,"b",{ set:function(newValue){ console.log("你要赋值给我,个人新值是"+newValue) }, get:function(){ console.log("你取个人值") return 2 //注意这里,我硬编码返回2 } }) a.b =1 //打印 你要赋值给我,个人新值是1 console.log(a.b) //打印 你取个人值 //打印 2 注意这里,和个人硬编码相同的
相关文章
相关标签/搜索