mirror of
https://github.com/ruanyf/es6tutorial.git
synced 2025-05-24 18:32:22 +00:00
docs: edit Object
This commit is contained in:
parent
75dadfdda1
commit
d0865f0773
@ -632,40 +632,40 @@ Object.getOwnPropertyDescriptor(class {foo() {}}.prototype, 'foo').enumerable
|
|||||||
|
|
||||||
## 属性的遍历
|
## 属性的遍历
|
||||||
|
|
||||||
ES6一共有5种方法可以遍历对象的属性。
|
ES6 一共有5种方法可以遍历对象的属性。
|
||||||
|
|
||||||
**(1)for...in**
|
**(1)for...in**
|
||||||
|
|
||||||
`for...in`循环遍历对象自身的和继承的可枚举属性(不含Symbol属性)。
|
`for...in`循环遍历对象自身的和继承的可枚举属性(不含 Symbol 属性)。
|
||||||
|
|
||||||
**(2)Object.keys(obj)**
|
**(2)Object.keys(obj)**
|
||||||
|
|
||||||
`Object.keys`返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含Symbol属性)。
|
`Object.keys`返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含 Symbol 属性)。
|
||||||
|
|
||||||
**(3)Object.getOwnPropertyNames(obj)**
|
**(3)Object.getOwnPropertyNames(obj)**
|
||||||
|
|
||||||
`Object.getOwnPropertyNames`返回一个数组,包含对象自身的所有属性(不含Symbol属性,但是包括不可枚举属性)。
|
`Object.getOwnPropertyNames`返回一个数组,包含对象自身的所有属性(不含 Symbol 属性,但是包括不可枚举属性)。
|
||||||
|
|
||||||
**(4)Object.getOwnPropertySymbols(obj)**
|
**(4)Object.getOwnPropertySymbols(obj)**
|
||||||
|
|
||||||
`Object.getOwnPropertySymbols`返回一个数组,包含对象自身的所有Symbol属性。
|
`Object.getOwnPropertySymbols`返回一个数组,包含对象自身的所有 Symbol 属性。
|
||||||
|
|
||||||
**(5)Reflect.ownKeys(obj)**
|
**(5)Reflect.ownKeys(obj)**
|
||||||
|
|
||||||
`Reflect.ownKeys`返回一个数组,包含对象自身的所有属性,不管属性名是Symbol或字符串,也不管是否可枚举。
|
`Reflect.ownKeys`返回一个数组,包含对象自身的所有属性,不管属性名是 Symbol 或字符串,也不管是否可枚举。
|
||||||
|
|
||||||
以上的5种方法遍历对象的属性,都遵守同样的属性遍历的次序规则。
|
以上的5种方法遍历对象的属性,都遵守同样的属性遍历的次序规则。
|
||||||
|
|
||||||
- 首先遍历所有属性名为数值的属性,按照数字排序。
|
- 首先遍历所有属性名为数值的属性,按照数字排序。
|
||||||
- 其次遍历所有属性名为字符串的属性,按照生成时间排序。
|
- 其次遍历所有属性名为字符串的属性,按照生成时间排序。
|
||||||
- 最后遍历所有属性名为Symbol值的属性,按照生成时间排序。
|
- 最后遍历所有属性名为 Symbol 值的属性,按照生成时间排序。
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
Reflect.ownKeys({ [Symbol()]:0, b:0, 10:0, 2:0, a:0 })
|
Reflect.ownKeys({ [Symbol()]:0, b:0, 10:0, 2:0, a:0 })
|
||||||
// ['2', '10', 'b', 'a', Symbol()]
|
// ['2', '10', 'b', 'a', Symbol()]
|
||||||
```
|
```
|
||||||
|
|
||||||
上面代码中,`Reflect.ownKeys`方法返回一个数组,包含了参数对象的所有属性。这个数组的属性次序是这样的,首先是数值属性`2`和`10`,其次是字符串属性`b`和`a`,最后是Symbol属性。
|
上面代码中,`Reflect.ownKeys`方法返回一个数组,包含了参数对象的所有属性。这个数组的属性次序是这样的,首先是数值属性`2`和`10`,其次是字符串属性`b`和`a`,最后是 Symbol 属性。
|
||||||
|
|
||||||
## `__proto__`属性,Object.setPrototypeOf(),Object.getPrototypeOf()
|
## `__proto__`属性,Object.setPrototypeOf(),Object.getPrototypeOf()
|
||||||
|
|
||||||
@ -1337,6 +1337,10 @@ let a = {a: 'a'};
|
|||||||
let b = {b: 'b'};
|
let b = {b: 'b'};
|
||||||
let c = {c: 'c'};
|
let c = {c: 'c'};
|
||||||
let d = mix(c).with(a, b);
|
let d = mix(c).with(a, b);
|
||||||
|
|
||||||
|
d.c // "c"
|
||||||
|
d.b // "b"
|
||||||
|
d.a // "a"
|
||||||
```
|
```
|
||||||
|
|
||||||
上面代码中,对象`a`和`b`被混入了对象`c`。
|
上面代码中,对象`a`和`b`被混入了对象`c`。
|
||||||
|
Loading…
x
Reference in New Issue
Block a user