fix #171
This commit is contained in:
parent
401d3ac906
commit
4d0f2c3e16
@ -128,13 +128,13 @@
|
|||||||
|
|
||||||
这种继承方式,**Child 可以继承 Parent 的原型**,但有个缺点:
|
这种继承方式,**Child 可以继承 Parent 的原型**,但有个缺点:
|
||||||
|
|
||||||
缺点是:**如果修改 child1实例的name属性,child2实例中的name属性也会跟着改变**。
|
缺点是:**如果修改 child1实例的对象属性,child2实例中的对象属性也会跟着改变**。
|
||||||
|
|
||||||
如下:
|
如下:
|
||||||
|
|
||||||
![](http://img.smyhvae.com/20180307_1123.png)
|
![](http://img.smyhvae.com/20180307_1123.png)
|
||||||
|
|
||||||
上面的代码中, child1修改了arr属性,却发现,child2的arr属性也跟着改变了。这显然不太好,在业务中,两个子模块应该隔离才对。如果改了一个对象,另一个对象却发生了改变,就不太好。
|
上面的代码中, child1修改了arr属性(arr属于引用数据类型),却发现,child2的arr属性也跟着改变了;当然了,基本数据类型 name 不会发生变化。这显然不太好,在业务中,两个子模块应该隔离才对。如果改了一个对象,另一个对象却发生了改变,就不太好。
|
||||||
|
|
||||||
造成这种缺点的原因是:child1和child2共用原型。即:`chi1d1.__proto__ === child2__proto__`是严格相同。而 arr方法是在 Parent 的实例上(即 Child实例的原型)的。
|
造成这种缺点的原因是:child1和child2共用原型。即:`chi1d1.__proto__ === child2__proto__`是严格相同。而 arr方法是在 Parent 的实例上(即 Child实例的原型)的。
|
||||||
|
|
||||||
@ -168,10 +168,5 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
ES6中的继承方式,一带而过即可,重点是要掌握ES5中的继承。
|
ES6中的继承方式,一带而过即可,重点是要掌握ES5中的继承。
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user