@@ -33,7 +33,7 @@ JavaScript 提供了一个内部数据结构,用来描述对象的属性,控
3333
3434(4)` configurable `
3535
36- ` configurable ` 是一个布尔值,表示可配置性 ,默认为` true ` 。如果设为` false ` ,将阻止某些操作改写该属性 ,比如无法删除该属性,也不得改变该属性的属性描述对象 (` value ` 属性除外)。也就是说,` configurable ` 属性控制了属性描述对象的可写性。
36+ ` configurable ` 是一个布尔值,表示属性的可配置性 ,默认为` true ` 。如果设为` false ` ,将阻止某些操作改写属性描述对象 ,比如无法删除该属性,也不得改变各种元属性 (` value ` 属性除外)。也就是说,` configurable ` 属性控制了属性描述对象的可写性。
3737
3838(5)` get `
3939
@@ -350,7 +350,7 @@ JSON.stringify(obj) // "{}"
350350
351351### configurable
352352
353- ` configurable ` (可配置性)返回一个布尔值,决定了是否可以修改属性描述对象。也就是说,` configurable ` 为` false ` 时,` value ` 、 ` writable ` 、` enumerable ` 和` configurable ` 都不能被修改了。
353+ ` configurable ` (可配置性)返回一个布尔值,决定了是否可以修改属性描述对象。也就是说,` configurable ` 为` false ` 时,` writable ` 、` enumerable ` 和` configurable ` 都不能被修改了。
354354
355355``` javascript
356356var obj = Object .defineProperty ({}, ' p' , {
@@ -360,9 +360,6 @@ var obj = Object.defineProperty({}, 'p', {
360360 configurable: false
361361});
362362
363- Object .defineProperty (obj, ' p' , {value: 2 })
364- // TypeError: Cannot redefine property: p
365-
366363Object .defineProperty (obj, ' p' , {writable: true })
367364// TypeError: Cannot redefine property: p
368365
@@ -371,11 +368,14 @@ Object.defineProperty(obj, 'p', {enumerable: true})
371368
372369Object .defineProperty (obj, ' p' , {configurable: true })
373370// TypeError: Cannot redefine property: p
371+
372+ Object .defineProperty (obj, ' p' , {value: 2 })
373+ // TypeError: Cannot redefine property: p
374374```
375375
376- 上面代码中,` obj.p ` 的` configurable ` 为 ` false ` 。然后,改动` value ` 、 ` writable ` 、` enumerable ` 、` configurable ` ,结果都报错。
376+ 上面代码中,` obj.p ` 的` configurable ` 属性为 ` false ` 。然后,改动` writable ` 、` enumerable ` 、` configurable ` ,结果都报错。
377377
378- 注意,` writable ` 只有在 ` false ` 改为` true ` 会报错 ,` true ` 改为` false ` 是允许的。
378+ 注意,` writable ` 属性只有在 ` false ` 改为` true ` 时会报错 ,` true ` 改为` false ` 是允许的。
379379
380380``` javascript
381381var obj = Object .defineProperty ({}, ' p' , {
@@ -387,7 +387,7 @@ Object.defineProperty(obj, 'p', {writable: false})
387387// 修改成功
388388```
389389
390- 至于 ` value ` , 只要` writable ` 和` configurable ` 有一个为` true ` ,就允许改动。
390+ ` value ` 属性的情况比较特殊。 只要` writable ` 和` configurable ` 有一个为` true ` ,就允许改动` value ` 。
391391
392392``` javascript
393393var o1 = Object .defineProperty ({}, ' p' , {
@@ -409,7 +409,7 @@ Object.defineProperty(o2, 'p', {value: 2})
409409// 修改成功
410410```
411411
412- 另外,` writable ` 为` false ` 时,直接目标属性赋值 ,不报错,但不会成功。
412+ 另外,` writable ` 为` false ` 时,直接对目标属性赋值 ,不报错,但不会成功。
413413
414414``` javascript
415415var obj = Object .defineProperty ({}, ' p' , {
0 commit comments