@@ -33,7 +33,7 @@ JavaScript 提供了一个内部数据结构,用来描述对象的属性,控
33
33
34
34
(4)` configurable `
35
35
36
- ` configurable ` 是一个布尔值,表示可配置性 ,默认为` true ` 。如果设为` false ` ,将阻止某些操作改写该属性 ,比如无法删除该属性,也不得改变该属性的属性描述对象 (` value ` 属性除外)。也就是说,` configurable ` 属性控制了属性描述对象的可写性。
36
+ ` configurable ` 是一个布尔值,表示属性的可配置性 ,默认为` true ` 。如果设为` false ` ,将阻止某些操作改写属性描述对象 ,比如无法删除该属性,也不得改变各种元属性 (` value ` 属性除外)。也就是说,` configurable ` 属性控制了属性描述对象的可写性。
37
37
38
38
(5)` get `
39
39
@@ -350,7 +350,7 @@ JSON.stringify(obj) // "{}"
350
350
351
351
### configurable
352
352
353
- ` configurable ` (可配置性)返回一个布尔值,决定了是否可以修改属性描述对象。也就是说,` configurable ` 为` false ` 时,` value ` 、 ` writable ` 、` enumerable ` 和` configurable ` 都不能被修改了。
353
+ ` configurable ` (可配置性)返回一个布尔值,决定了是否可以修改属性描述对象。也就是说,` configurable ` 为` false ` 时,` writable ` 、` enumerable ` 和` configurable ` 都不能被修改了。
354
354
355
355
``` javascript
356
356
var obj = Object .defineProperty ({}, ' p' , {
@@ -360,9 +360,6 @@ var obj = Object.defineProperty({}, 'p', {
360
360
configurable: false
361
361
});
362
362
363
- Object .defineProperty (obj, ' p' , {value: 2 })
364
- // TypeError: Cannot redefine property: p
365
-
366
363
Object .defineProperty (obj, ' p' , {writable: true })
367
364
// TypeError: Cannot redefine property: p
368
365
@@ -371,11 +368,14 @@ Object.defineProperty(obj, 'p', {enumerable: true})
371
368
372
369
Object .defineProperty (obj, ' p' , {configurable: true })
373
370
// TypeError: Cannot redefine property: p
371
+
372
+ Object .defineProperty (obj, ' p' , {value: 2 })
373
+ // TypeError: Cannot redefine property: p
374
374
```
375
375
376
- 上面代码中,` obj.p ` 的` configurable ` 为 ` false ` 。然后,改动` value ` 、 ` writable ` 、` enumerable ` 、` configurable ` ,结果都报错。
376
+ 上面代码中,` obj.p ` 的` configurable ` 属性为 ` false ` 。然后,改动` writable ` 、` enumerable ` 、` configurable ` ,结果都报错。
377
377
378
- 注意,` writable ` 只有在 ` false ` 改为` true ` 会报错 ,` true ` 改为` false ` 是允许的。
378
+ 注意,` writable ` 属性只有在 ` false ` 改为` true ` 时会报错 ,` true ` 改为` false ` 是允许的。
379
379
380
380
``` javascript
381
381
var obj = Object .defineProperty ({}, ' p' , {
@@ -387,7 +387,7 @@ Object.defineProperty(obj, 'p', {writable: false})
387
387
// 修改成功
388
388
```
389
389
390
- 至于 ` value ` , 只要` writable ` 和` configurable ` 有一个为` true ` ,就允许改动。
390
+ ` value ` 属性的情况比较特殊。 只要` writable ` 和` configurable ` 有一个为` true ` ,就允许改动` value ` 。
391
391
392
392
``` javascript
393
393
var o1 = Object .defineProperty ({}, ' p' , {
@@ -409,7 +409,7 @@ Object.defineProperty(o2, 'p', {value: 2})
409
409
// 修改成功
410
410
```
411
411
412
- 另外,` writable ` 为` false ` 时,直接目标属性赋值 ,不报错,但不会成功。
412
+ 另外,` writable ` 为` false ` 时,直接对目标属性赋值 ,不报错,但不会成功。
413
413
414
414
``` javascript
415
415
var obj = Object .defineProperty ({}, ' p' , {
0 commit comments