js对象的六个底层属性
js中有两个个可以修改或者定义对象属性的方法:defineProperty(object,name,discriptor)和defineProperties(object, props)。
defineProperty
参数解释:
- object:要操作的对象
- name:要定义或修改的属性的名称。
- discriptor:是个对象,其中包含四个用于操作第二步中name的属性。
返回值:
被传递给函数的修改后的对象
下边分别看一下discriptor中都有哪四个属性,它们分别有什么作用:
configurable
这个属性用于控制此属性是否可被修改或删除,为true时候可被修改也可被删除,为false则相反。 默认为true
enumerable
当且仅当该属性的enumerable为true时,该属性才能够出现在对象的可枚举属性(for in, Object.keys()可遍历)中。默认为 true。
value
属性值,可以为任何有效的值,默认为undefined
writable
控制value是否可被修改
get
在访问这个属性时候返回的value值。
set
在给这个属性赋值或者修改值时候会执行这个方法。
例子
1 | const person = { |
参考文献