最近在看js红宝书,学到了继承这一章节,看到了下图这段代码根据自己理解不明白为什么两次实例的colors值不一样
又是自己画图又是查找资料看别人如何理解的,今天才按自己的理解搞明白为啥。可能我的理解也是有偏差错误的,希望佬可以指正。参考了这篇博客明白了构造函数,实例,原型啊等等的概念。然后根据自己理解把这段代码的关系图画了下来。5分钟带你搞懂 构造函数、原型对象、实例对象、原型、原型链_简述一下对原型,构造函数以及实例的理解-CSDN博客
解释:
首先代码中有一个SuperType构造函数,它有一个colors属性;然后SubType构造函数调用了call方法改变了this的指向,其中this指向SuperType构造函数,等同于SuperType构造函数里面有的属性SubType构造函数中都有,且值一样。然后根据SubType构造函数实例化了一个instance1对象,new的这个过程呢根据参考的博客理解,感觉也相当于这个实例对象中加了SubType构造函数里面的所有属性。之后对象1改变了colors的值,所以对象1的colors属性值改变了。
再然后有根据构造方法实例化出一个新的对象2,所以对象2也在自身中继承了SubType的属性,所以对象2中的colors值依然是原值。
okk~ 我目前就是这么理解的,我发现通过画图可以很好理解难懂的内容。这个知识点我不知道自己这样的理解是否正确,希望大佬们可以指正错误!!!