From 4d0f2c3e168a6a0b7910e43679fb552e7fb46c25 Mon Sep 17 00:00:00 2001 From: qianguyihao Date: Tue, 25 May 2021 12:57:19 +0800 Subject: [PATCH] fix #171 --- 14-前端面试/05-02.面向对象:类的定义和继承的几种方式.md | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/14-前端面试/05-02.面向对象:类的定义和继承的几种方式.md b/14-前端面试/05-02.面向对象:类的定义和继承的几种方式.md index 61dd208..38d165b 100644 --- a/14-前端面试/05-02.面向对象:类的定义和继承的几种方式.md +++ b/14-前端面试/05-02.面向对象:类的定义和继承的几种方式.md @@ -128,13 +128,13 @@ 这种继承方式,**Child 可以继承 Parent 的原型**,但有个缺点: -缺点是:**如果修改 child1实例的name属性,child2实例中的name属性也会跟着改变**。 +缺点是:**如果修改 child1实例的对象属性,child2实例中的对象属性也会跟着改变**。 如下: ![](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实例的原型)的。 @@ -168,10 +168,5 @@ -```javascript - -``` - - ES6中的继承方式,一带而过即可,重点是要掌握ES5中的继承。