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

时间:2016-05-15 19:38:47

标签: javascript prototypal-inheritance

由于Object.create()也返回一个新对象,因此

B.prototype = new A()

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

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

1 个答案:

答案 0 :(得分:4)

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

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

此外,如果条件被填充,A()构造函数可以执行一些检查并引发异常。

Fincally两种方法有一些区别。