@@ -45,7 +45,7 @@ JavaScript 提供了一个内部数据结构,用来描述对象的属性,控
4545
4646## Object.getOwnPropertyDescriptor()
4747
48- ` Object.getOwnPropertyDescriptor ` 方法可以获取属性描述对象。它的第一个参数是一个对象 ,第二个参数是一个字符串,对应该对象的某个属性名 。
48+ ` Object.getOwnPropertyDescriptor() ` 方法可以获取属性描述对象。它的第一个参数是目标对象 ,第二个参数是一个字符串,对应目标对象的某个属性名 。
4949
5050``` javascript
5151var obj = { p: ' a' };
@@ -58,9 +58,9 @@ Object.getOwnPropertyDescriptor(obj, 'p')
5858// }
5959```
6060
61- 上面代码中,` Object.getOwnPropertyDescriptor ` 方法获取` obj.p ` 的属性描述对象。
61+ 上面代码中,` Object.getOwnPropertyDescriptor() ` 方法获取` obj.p ` 的属性描述对象。
6262
63- 注意,` Object.getOwnPropertyDescriptor ` 方法只能用于对象自身的属性,不能用于继承的属性。
63+ 注意,` Object.getOwnPropertyDescriptor() ` 方法只能用于对象自身的属性,不能用于继承的属性。
6464
6565``` javascript
6666var obj = { p: ' a' };
@@ -69,7 +69,7 @@ Object.getOwnPropertyDescriptor(obj, 'toString')
6969// undefined
7070```
7171
72- 上面代码中,` toString ` 是` Obj ` 对象继承的属性,` Object.getOwnPropertyDescriptor ` 无法获取。
72+ 上面代码中,` toString ` 是` obj ` 对象继承的属性,` Object.getOwnPropertyDescriptor() ` 无法获取。
7373
7474## Object.getOwnPropertyNames()
7575
@@ -108,17 +108,17 @@ Object.getOwnPropertyNames(Object.prototype)
108108
109109## Object.defineProperty(),Object.defineProperties()
110110
111- ` Object.defineProperty ` 方法允许通过属性描述对象,定义或修改一个属性,然后返回修改后的对象,它的用法如下。
111+ ` Object.defineProperty() ` 方法允许通过属性描述对象,定义或修改一个属性,然后返回修改后的对象,它的用法如下。
112112
113113``` javascript
114114Object .defineProperty (object, propertyName, attributesObject)
115115```
116116
117117` Object.defineProperty ` 方法接受三个参数,依次如下。
118118
119- - 属性所在的对象
120- - 属性名(它应该是一个字符串)
121- - 属性描述对象
119+ - object: 属性所在的对象
120+ - propertyName:字符串,表示属性名
121+ - attributesObject: 属性描述对象
122122
123123举例来说,定义` obj.p ` 可以写成下面这样。
124124
@@ -136,11 +136,11 @@ obj.p = 246;
136136obj .p // 123
137137```
138138
139- 上面代码中,` Object.defineProperty ` 方法定义了` obj.p ` 属性。由于属性描述对象的` writable ` 属性为` false ` ,所以` obj.p ` 属性不可写。注意,这里的` Object.defineProperty ` 方法的第一个参数是` {} ` (一个新建的空对象),` p ` 属性直接定义在这个空对象上面,然后返回这个对象,这是` Object.defineProperty ` 的常见写法 。
139+ 上面代码中,` Object.defineProperty() ` 方法定义了` obj.p ` 属性。由于属性描述对象的` writable ` 属性为` false ` ,所以` obj.p ` 属性不可写。注意,这里的` Object.defineProperty ` 方法的第一个参数是` {} ` (一个新建的空对象),` p ` 属性直接定义在这个空对象上面,然后返回这个对象,这是` Object.defineProperty() ` 的常见用法 。
140140
141- 如果属性已经存在,` Object.defineProperty ` 方法相当于更新该属性的属性描述对象。
141+ 如果属性已经存在,` Object.defineProperty() ` 方法相当于更新该属性的属性描述对象。
142142
143- 如果一次性定义或修改多个属性,可以使用` Object.defineProperties ` 方法。
143+ 如果一次性定义或修改多个属性,可以使用` Object.defineProperties() ` 方法。
144144
145145``` javascript
146146var obj = Object .defineProperties ({}, {
@@ -157,7 +157,7 @@ obj.p2 // "abc"
157157obj .p3 // "123abc"
158158```
159159
160- 上面代码中,` Object.defineProperties ` 同时定义了` obj ` 对象的三个属性。其中,` p3 ` 属性定义了取值函数` get ` ,即每次读取该属性,都会调用这个取值函数。
160+ 上面代码中,` Object.defineProperties() ` 同时定义了` obj ` 对象的三个属性。其中,` p3 ` 属性定义了取值函数` get ` ,即每次读取该属性,都会调用这个取值函数。
161161
162162注意,一旦定义了取值函数` get ` (或存值函数` set ` ),就不能将` writable ` 属性设为` true ` ,或者同时定义` value ` 属性,否则会报错。
163163
@@ -181,7 +181,7 @@ Object.defineProperty(obj, 'p', {
181181
182182上面代码中,同时定义了` get ` 属性和` value ` 属性,以及将` writable ` 属性设为` true ` ,就会报错。
183183
184- ` Object.defineProperty() ` 和` Object.defineProperties() ` 的第三个参数,是一个属性对象。它的 ` writable ` 、` configurable ` 、` enumerable ` 这三个属性的默认值都为` false ` 。
184+ ` Object.defineProperty() ` 和` Object.defineProperties() ` 参数里面的属性描述对象, ` writable ` 、` configurable ` 、` enumerable ` 这三个属性的默认值都为` false ` 。
185185
186186``` javascript
187187var obj = {};
@@ -195,11 +195,11 @@ Object.getOwnPropertyDescriptor(obj, 'foo')
195195// }
196196```
197197
198- 上面代码中,定义` obj.p ` 时用了一个空的属性描述对象,就可以看到各个元属性的默认值。
198+ 上面代码中,定义` obj.foo ` 时用了一个空的属性描述对象,就可以看到各个元属性的默认值。
199199
200200## Object.prototype.propertyIsEnumerable()
201201
202- 实例对象的` propertyIsEnumerable ` 方法返回一个布尔值,用来判断某个属性是否可遍历。
202+ 实例对象的` propertyIsEnumerable() ` 方法返回一个布尔值,用来判断某个属性是否可遍历。注意,这个方法只能用于判断对象自身的属性,对于继承的属性一律返回 ` false ` 。
203203
204204``` javascript
205205var obj = {};
@@ -209,7 +209,7 @@ obj.propertyIsEnumerable('p') // true
209209obj .propertyIsEnumerable (' toString' ) // false
210210```
211211
212- 上面代码中,` obj.p ` 是可遍历的,而继承自原型对象的 ` obj.toString ` 属性是不可遍历的 。
212+ 上面代码中,` obj.p ` 是可遍历的,而 ` obj.toString ` 是继承的属性 。
213213
214214## 元属性
215215
0 commit comments