momoyy123
2016-05-18 15:16
为什么不是Student = Object.create(Person);和Student.prototype = Object.create(Person.prototype);有什么区别
你可以这样想,prototype属性里包含有两个属性,一个是构造器,一个是实例原型。当你继承类时,要从父类获取构造器和方法,然而这两个都是保存在prototype属性中。【有误指出】
如果用了Student = Object.create(Person),Student 变成了一个实例对象不是一个构造函数了,
还怎么进行下一步new Student()。
谁能再给解释一下这个问题?
不太明白,用create创建对象,Person不就是Student的原型了吗,为什么还要加prototype
Student=Object.create(Person)是一个赋值,表示新建一个Person对象赋值给Student,没有表现出基于原型链的继承。而后者表示Student的prototype指向原型为Person.prototype的空对象,这样才是基于原型链的继承,Student从Person处继承到了基类的属性和方法。
JavaScript深入浅出
281102 学习 · 1020 问题
相似问题