File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -188,7 +188,7 @@ eval('({foo: 123})') // {foo: 123}
188188
189189## 属性的操作
190190
191- ### 读取属性
191+ ### 属性的读取
192192
193193读取对象的属性,有两种方法,一种是使用点运算符,还有一种是使用方括号运算符。
194194
@@ -276,7 +276,7 @@ var obj = {};
276276obj .p = 1 ;
277277```
278278
279- ### 查看所有属性
279+ ### 属性的查看
280280
281281查看一个对象本身的所有属性,可以使用` Object.keys ` 方法。
282282
@@ -290,7 +290,7 @@ Object.keys(obj);
290290// ['key1', 'key2']
291291```
292292
293- ### delete 命令
293+ ### 属性的删除: delete 命令
294294
295295` delete ` 命令用于删除对象的属性,删除成功后返回` true ` 。
296296
@@ -338,7 +338,7 @@ obj.toString // function toString() { [native code] }
338338
339339上面代码中,` toString ` 是对象` obj ` 继承的属性,虽然` delete ` 命令返回` true ` ,但该属性并没有被删除,依然存在。这个例子还说明,即使` delete ` 返回` true ` ,该属性依然可能读取到值。
340340
341- ### in 运算符
341+ ### 属性是否存在: in 运算符
342342
343343` in ` 运算符用于检查对象是否包含某个属性(注意,检查的是键名,不是键值),如果包含就返回` true ` ,否则返回` false ` 。
344344
@@ -351,12 +351,21 @@ var obj = { p: 1 };
351351
352352``` javascript
353353var obj = {};
354- ' toString' in o // true
354+ ' toString' in obj // true
355355```
356356
357357上面代码中,` toString ` 方法不是对象` obj ` 自身的属性,而是继承的属性。但是,` in ` 运算符不能识别,对继承的属性也返回` true ` 。
358358
359- ### for...in 循环
359+ 这时,可以使用对象的` hasOwnProperty ` 方法判断一下,是否为对象自身的属性。
360+
361+ ``` javascript
362+ var obj = {};
363+ if (' toString' in obj) {
364+ console .log (obj .hasOwnProperty (' toString' )) // false
365+ }
366+ ```
367+
368+ ### 属性的遍历:for...in 循环
360369
361370` for...in ` 循环用来遍历一个对象的全部属性。
362371
You can’t perform that action at this time.
0 commit comments