Trong JavaScript, sự khác biệt giữa hai ví dụ này là gì:
Điều kiện tiên quyết:
function SomeBaseClass(){
}
SomeBaseClass.prototype = {
doThis : function(){
},
doThat : function(){
}
}
Ví dụ kế thừa A sử dụng Object.create:
function MyClass(){
}
MyClass.prototype = Object.create(SomeBaseClass.prototype);
Ví dụ kế thừa B sử dụng từ khóa mới
function MyClass(){
}
MyClass.prototype = new SomeBaseClass();
Cả hai ví dụ dường như làm điều tương tự. Khi nào bạn sẽ chọn cái này hơn cái kia?
Một câu hỏi bổ sung: Xem xét mã trong liên kết bên dưới (dòng 15), trong đó tham chiếu đến hàm tạo riêng của hàm được lưu trữ trong nguyên mẫu. Tại sao điều này hữu ích?
https://github.com/mrdoob/three.js/blob/master/src/loaders/ImageLoader.js
Trích dẫn (nếu bạn không muốn mở liên kết):
THREE.ImageLoader.prototype = {
constructor: THREE.ImageLoader
}
Object.create
. Đây là một sai lầm, và nên được mở lại.