Skip to content

Commit 3f8e88a

Browse files
committed
docs(stdlib/attribute): fix wangdoc#175
1 parent 7afc477 commit 3f8e88a

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

docs/stdlib/attributes.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -445,7 +445,7 @@ obj.p2 // 2
445445

446446
除了直接定义以外,属性还可以用存取器(accessor)定义。其中,存值函数称为`setter`,使用属性描述对象的`set`属性;取值函数称为`getter`,使用属性描述对象的`get`属性。
447447

448-
一旦对目标属性定义了存取器,那么存取的时候,都将执行对应的函数。利用这个功能,可以实现许多高级特性,比如某个属性禁止赋值
448+
一旦对目标属性定义了存取器,那么存取的时候,都将执行对应的函数。利用这个功能,可以实现许多高级特性,比如定制属性的读取和赋值行为
449449

450450
```javascript
451451
var obj = Object.defineProperty({}, 'p', {
@@ -466,6 +466,7 @@ obj.p = 123 // "setter: 123"
466466
JavaScript 还提供了存取器的另一种写法。
467467

468468
```javascript
469+
// 写法二
469470
var obj = {
470471
get p() {
471472
return 'getter';
@@ -476,7 +477,7 @@ var obj = {
476477
};
477478
```
478479

479-
上面的写法与定义属性描述对象是等价的,而且使用更广泛
480+
上面两种写法,虽然属性`p`的读取和赋值行为是一样的,但是有一些细微的区别。第一种写法,属性`p``configurable``enumerable`都为`false`,从而导致属性`p`是不可遍历的;第二种写法,属性`p``configurable``enumerable`都为`true`,因此属性`p`是可遍历的。实际开发中,写法二更常用
480481

481482
注意,取值函数`get`不能接受参数,存值函数`set`只能接受一个参数(即属性的值)。
482483

0 commit comments

Comments
 (0)