之间的区别:new ExampleConstructor 和 Object.create(ExampleConstructor)

Difference between: new ExampleConstructor and Object.create(ExampleConstructor)

代码如附件

function Bird() {
  let weight = 15;
  this.getWeight = () => weight
}

// let birb = new Bird
let birb = Object.create(Bird.prototype);

console.log(birb.getWeight())

当我使用新的 Bird 时,它 returns 一个功能很好。但是,当我使用 Object.create(Bird.prototype) 时,我得到一个 TypeError 告诉我 birb.getWeight 不是一个函数。

为什么从原型创建会干扰功能?

getWeight 在原型上不存在。它是在构造函数为 运行 时在对象本身上创建的(当您使用 Object.create 而不是调用函数时不会发生这种情况)。