Skip to content

Commit 739e482

Browse files
committed
docs(basic): edit object
1 parent 5a90194 commit 739e482

1 file changed

Lines changed: 15 additions & 6 deletions

File tree

docs/basic/object.md

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff 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 = {};
276276
obj.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
353353
var 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

0 commit comments

Comments
 (0)