@@ -14,9 +14,41 @@ Object.is(NaN, NaN) // true
14
14
15
15
```
16
16
17
- ## __ proto __ 属性
17
+ ## Object.assign()
18
18
19
- ES6正式将__ proto__ 属性写入了标准,用来指定对象的prototype对象。
19
+ Object.assign()用来将源对象(source)的所有可枚举属性,复制到目标对象(target)。它至少需要两个对象作为参数,第一个参数是目标对象,后面的参数都是源对象。只要有一个参数不是对象,就会抛出TypeError错误。
20
+
21
+ ``` javascript
22
+
23
+ var target = { a: 1 };
24
+
25
+ var source1 = { b: 2 };
26
+ var source2 = { c: 3 };
27
+
28
+ Object .assign (target, source1, source2);
29
+ target // {a:1, b:2, c:3}
30
+
31
+ ```
32
+
33
+ 注意,如果源对象与目标对象有同名属性,则前者会覆盖后者。
34
+
35
+ ``` javascript
36
+
37
+ var target = { a: 1 , b: 1 };
38
+
39
+ var source1 = { b: 2 };
40
+ var source2 = { c: 3 };
41
+
42
+ Object .assign (target, source1, source2);
43
+ target // {a:1, b:2, c:3}
44
+
45
+ ```
46
+
47
+ ## __ proto__ 属性,Object.setPrototypeOf(),Object.getPrototypeOf()
48
+
49
+ ** (1)__ proto__ 属性**
50
+
51
+ __ proto__ 属性,用来读取或设置当前对象的prototype对象。该属性一度被正式写入ES6草案,但后来又被移除。目前,所有浏览器(包括IE11)都部署了这个属性。
20
52
21
53
``` javascript
22
54
@@ -29,6 +61,41 @@ var obj = {
29
61
30
62
有了这个属性,实际上已经不需要通过Object.create()来生成新对象了。
31
63
64
+ ** (2)Object.setPrototypeOf()**
65
+
66
+ Object.setPrototypeOf方法的作用与__ proto__ 相同,用来设置一个对象的prototype对象。
67
+
68
+ ``` javascript
69
+
70
+ // 格式
71
+ Object .setPrototypeOf (object, prototype)
72
+
73
+ // 用法
74
+ var o = Object .setPrototypeOf ({}, null );
75
+
76
+ ```
77
+
78
+ 该方法等同于下面的函数。
79
+
80
+ ``` javascript
81
+
82
+ function (obj , proto ) {
83
+ obj .__proto__ = proto;
84
+ return obj;
85
+ }
86
+
87
+ ```
88
+
89
+ ** (3)Object.getPrototypeOf()**
90
+
91
+ 与setPrototypeOf()配套的,还有getPrototypeOf(),用于读取一个对象的prototype对象。
92
+
93
+ ``` javascript
94
+
95
+ Object .getPrototypeOf (obj)
96
+
97
+ ```
98
+
32
99
## 增强的对象写法
33
100
34
101
ES6允许直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。
0 commit comments