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() 构造函数可以执行一些检查并在满足条件时引发异常。
最后两种方法还是有一些区别的。
由于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() 构造函数可以执行一些检查并在满足条件时引发异常。
最后两种方法还是有一些区别的。