关于es5继承中子构造函数原型的问题
图中代码第5行
我能够理解第四行子构造函数的原型是父构造函数new出来的 Sub.protorype = new Super()
所以在这里 Sub.protorype.constructor === Super
是为true的
至于要把子构造函数的原型的构造函数重新指向自身的原因是什么呢
我发现好像不执行这个语句的话 Sub.protorype.constructor = Sub
也能进行继承
关于es5继承中子构造函数原型的问题
图中代码第5行
我能够理解第四行子构造函数的原型是父构造函数new出来的 Sub.protorype = new Super()
所以在这里 Sub.protorype.constructor === Super
是为true的
至于要把子构造函数的原型的构造函数重新指向自身的原因是什么呢
我发现好像不执行这个语句的话 Sub.protorype.constructor = Sub
也能进行继承
constructor只是告诉你实例是用哪个构造函数初始化的,不影响原型链
Sub.protorype.constructor = Sub;
不管上面这句写还是不写,都不影响原型链,以下代码恒为真
Sub.prototype.__proto__.__proto__ === Object.prototype //原型链
sub1 instanceof Super
sub1 instanceof Sub //实例加了个1,更好区分Sub构造函数
总之,原型链取决于__proto__这个玩意,constructor只是用于检测的一个指针属性
13 回答13k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
6 回答1.1k 阅读
3 回答1.3k 阅读✓ 已解决
是能继承啊,但是Sub的实例获取constructor的时候就错了,成了Super明显是不对的,这是副作用,要纠正这个副作用。