苏秦陶侃博客

js对象属性的控制

字数统计: 322阅读时长: 1 min
2018/12/12 Share

js对象的六个底层属性

js中有两个个可以修改或者定义对象属性的方法:defineProperty(object,name,discriptor)和defineProperties(object, props)。

defineProperty

参数解释:

  1. object:要操作的对象
  2. name:要定义或修改的属性的名称。
  3. discriptor:是个对象,其中包含四个用于操作第二步中name的属性。

返回值:

  被传递给函数的修改后的对象

下边分别看一下discriptor中都有哪四个属性,它们分别有什么作用:

configurable

这个属性用于控制此属性是否可被修改或删除,为true时候可被修改也可被删除,为false则相反。 默认为true

enumerable

当且仅当该属性的enumerable为true时,该属性才能够出现在对象的可枚举属性(for in, Object.keys()可遍历)中。默认为 true。

value

属性值,可以为任何有效的值,默认为undefined

writable

控制value是否可被修改

get

在访问这个属性时候返回的value值。

set

在给这个属性赋值或者修改值时候会执行这个方法。

例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
const person = {
name: 'Tom',
age: 23
}
console.log(person.name) // Tom
console.log(Object.keys(person)) // [name,age]

Object.defineProperty(person, 'name', {
configurable: false,
enumerable: false,
value: '',
writable: true
})

console.log(person.name) //
console.log(Object.keys(person)) // [age]

参考文献

  1. MDN
CATALOG
  1. 1. js对象的六个底层属性
    1. 1.1. defineProperty
      1. 1.1.1. configurable
      2. 1.1.2. enumerable
      3. 1.1.3. value
      4. 1.1.4. writable
      5. 1.1.5. get
      6. 1.1.6. set
      7. 1.1.7. 例子