B.prototype = new A() 和 B.prototype = Object.create(A.prototype) 是一回事吗?

Are B.prototype = new A() and B.prototype = Object.create(A.prototype) the same thing?

由于Object.create()也是returns一个新对象,所以

B.prototype = new A()

B.prototype = Object.create(A.prototype)

同样的事情?如果不是,有什么区别?

这并不完全相同,因为当您这样做时:B.prototype = Object.create(A.prototype) 您正在使用对象的系统构造函数创建一个与对象 A 相同的对象 B。此方法不调用 A() 构造函数。

但是,当您执行 B.prototype = new A() 时,您正在调用 A 元素的构造函数,您可以在 A 的构造函数中获得其他一些 function/affectation 可以更改其中的数据。

此外,A() 构造函数可以执行一些检查并在满足条件时引发异常。

最后两种方法还是有一些区别的。