首先查看此示例
执行,控制台打印:
目前,构造函数的指向
重写原型,结果可能与我们的期望不同
执行,控制台打印:
目前,关键是
首先,我们需要清楚。当我们是一个新对象时,将有以下步骤:
请注意,当我们重写原型时,我们在使用对象对象的方法中创建了一个新对象,并且没有定义
因此,在此过程中,构造函数缺失。根据原始链的搜索规则,当前级别将找不到它,它将继续找到它。作为对象,其方向:
当然,这仍然是
所以
当然,还有其他值得注意的观点,例如重写原型的方向仍然相同。
为了更彻底地理解重写原型,让我们举一个示例,首先声明示例,然后重写:
执行,控制台打印:
可以看出,指向是在重写之前,在重写后未调用
自然,它不会改变
参与在
仍以上述示例为例,您可以在重写时手动分配值
重写原型时,它将产生新的损失。当我们重写原始链时,我们应该注意到这个问题,我们可以手动恢复任务的指向。
原始:https://juejin.cn/post/7101934229314863118