@@ -14,9 +14,41 @@ Object.is(NaN, NaN) // true
1414
1515```
1616
17- ## __ proto __ 属性
17+ ## Object.assign()
1818
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)都部署了这个属性。
2052
2153``` javascript
2254
@@ -29,6 +61,41 @@ var obj = {
2961
3062有了这个属性,实际上已经不需要通过Object.create()来生成新对象了。
3163
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+
3299## 增强的对象写法
33100
34101ES6允许直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。
0 commit comments