javascript - 为什么在原型(prototype)继承中需要使用 Object.create()

标签 javascript prototype-chain

我正在看一个使用原型(prototype)的继承示例,如下所示:

function Person(name){
   this.name = name
}

function Student(name){
  Person.call(this, name)
}
Student.prototype = Object.create(Person.prototype)
Student.prototype.constructor = Student

let jim = new Student("Jim")

我的问题是,为什么需要使用 Object.create(Person.prototype) 来设置原型(prototype),为什么不像 Person.prototype 那样简单地设置它?

最佳答案

如果你这样做

Student.prototype = Person.prototype;

下一步尝试扩展它:

Student.prototype.a = function(....

你也会影响 Person.prototype(因为它在赋值后是完全相同的对象)

关于javascript - 为什么在原型(prototype)继承中需要使用 Object.create(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70071548/

相关文章:

javascript - JavaScript 中 Number 和 Function.prototype 之间的关系是什么?

javascript - 构造函数属性 : __proto__. constructor vs prototype.constructor

javascript - PrimeNG p-table header 选择所有具有延迟加载和分页的持久性

javascript - 使用指令范围更新 Highcharts

javascript - 使用ajax如何在不刷新页面的情况下显示成功后的值

javascript - ES5 getters 和 setters 是 "potentially surprising and difficult to reason about"

JavaScript,原型(prototype)链顶端为null,如何通过代码证明?

javascript - cypress 中 .click() 函数的行为不一致

javascript变量值在外部对象时丢失

javascript - 对象不遍历其原型(prototype)链以获取值的任何情况?