ใน JavaScript ความแตกต่างระหว่างสองตัวอย่างนี้คืออะไร:
วิชาบังคับก่อน:
function SomeBaseClass(){
}
SomeBaseClass.prototype = {
doThis : function(){
},
doThat : function(){
}
}
ตัวอย่างการสืบทอด A โดยใช้ Object.create:
function MyClass(){
}
MyClass.prototype = Object.create(SomeBaseClass.prototype);
ตัวอย่างการสืบทอด B โดยใช้คำหลักใหม่
function MyClass(){
}
MyClass.prototype = new SomeBaseClass();
ทั้งสองตัวอย่างดูเหมือนจะทำในสิ่งเดียวกัน คุณจะเลือกอย่างใดอย่างหนึ่งเมื่อใด
คำถามเพิ่มเติม: พิจารณาโค้ดในลิงค์ด้านล่าง (บรรทัดที่ 15) ซึ่งการอ้างอิงถึงคอนสตรัคเตอร์ของฟังก์ชันจะถูกเก็บไว้ในต้นแบบ เหตุใดจึงมีประโยชน์
https://github.com/mrdoob/three.js/blob/master/src/loaders/ImageLoader.js
ข้อความที่ตัดตอนมา (หากคุณไม่ต้องการเปิดลิงก์):
THREE.ImageLoader.prototype = {
constructor: THREE.ImageLoader
}
Object.create
และคำตอบไม่ได้พูดถึง นี่เป็นข้อผิดพลาดและควรเปิดใหม่