认识Object.defineProperty()
defineProperty
Object.defineProperty()
方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象。
语法
Object.defineProperty(obj, prop, descriptor)
参数
- obj 要操作的对象
- prop 修改或新增的属性名称
- descriptor 属性描述符
属性描述符
描述符不能两者同时存在,只能是其中一个。
1. 数据描述符 数据描述符是一个具有值的属性,该值可以是可写的,也可以是不可写的。
2. 存取描述符 存取描述符是由 getter 函数和 setter 函数所描述的属性。
数据描述符 和 存取描述符 同时具有的键值:
`configurable` 当该属性的`configurable`为 `true` 时该属性的描述符改变,该属性可以从对象上删除。默认为 `false`。
`enumerable` 当且仅当该属性的 `enumerable` 键值为 true 时,该属性才会出现在对象的枚举属性中。
数据描述符
`value` 该属性对应的值。默认为 `undefined`
`writable` 当该属性的 `writable` 键值为 true 时,属性的值,也就是上面的 `value`,才能被赋值运算符改变。默认值为 `false`
示例
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 |
|
31 |
|
32 |
|
33 |
|
34 |
|
35 |
|
36 |
|
37 |
|
38 |
|
39 |
|
40 |
|
存取描述符
`get` 属性的 `getter` 函数,如果没有 `getter`,则为 `undefined`。当访问该属性时,会调用此函数。该函数的返回值会被用作属性的值。默认为 `undefined`。
`set` 属性的 setter 函数,如果没有 setter,则为 undefined。当属性值被修改时,会调用此函数。默认为 `undefined`。
示例
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!