为了账号安全,请及时绑定邮箱和手机立即绑定

为什么不是Student = Object.create(Person);和Student.prototype = Object.create(Person.prototype);有什么区别

为什么不是Student = Object.create(Person);和Student.prototype = Object.create(Person.prototype);有什么区别

正在回答

5 回答

你可以这样想,prototype属性里包含有两个属性,一个是构造器,一个是实例原型。当你继承类时,要从父类获取构造器和方法,然而这两个都是保存在prototype属性中。【有误指出】

0 回复 有任何疑惑可以回复我~
#1

momoyy123 提问者

非常感谢!
2016-12-19 回复 有任何疑惑可以回复我~

如果用了Student = Object.create(Person),Student 变成了一个实例对象不是一个构造函数了,

还怎么进行下一步new Student()。

0 回复 有任何疑惑可以回复我~

谁能再给解释一下这个问题?

0 回复 有任何疑惑可以回复我~

不太明白,用create创建对象,Person不就是Student的原型了吗,为什么还要加prototype


0 回复 有任何疑惑可以回复我~
#1

福尔摩斯易

我是这样理解的,通过create创建的 Student.prototype._proto_ = Person.prototype Person.prototype._proto_ = Object.prototype Object.prototype._proto_ = null; 所以: var bosn = new Student(); bosn._proto_ = Student.prototype
2017-02-16 回复 有任何疑惑可以回复我~

Student=Object.create(Person)是一个赋值,表示新建一个Person对象赋值给Student,没有表现出基于原型链的继承。而后者表示Student的prototype指向原型为Person.prototype的空对象,这样才是基于原型链的继承,Student从Person处继承到了基类的属性和方法。

1 回复 有任何疑惑可以回复我~
#1

momoyy123 提问者

不太明白,用create创建对象,Person不就是Student的原型了吗,为什么还要加prototype
2016-05-18 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么不是Student = Object.create(Person);和Student.prototype = Object.create(Person.prototype);有什么区别

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信