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

来源:8-1 概念与继承

momoyy123

2016-05-18 15:16

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

写回答 关注

5回答

  • 飞过那座山
    2016-06-27 21:43:22
    已采纳

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

    momoyy...

    非常感谢!

    2016-12-19 15:17:10

    共 1 条回复 >

  • chyco
    2020-04-24 17:56:23

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

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

  • 尘随马
    2018-04-09 12:15:41

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

  • momoyy123
    2016-05-18 17:51:59

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


    福尔摩斯易

    我是这样理解的,通过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 21:51:41

    共 1 条回复 >

  • lululumia
    2016-05-18 17:28:52

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

    momoyy...

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

    2016-05-18 17:52:26

    共 1 条回复 >

JavaScript深入浅出

由浅入深学习JS语言特性,且解析JS常见误区,从入门到掌握

281102 学习 · 1020 问题

查看课程

相似问题