JavaScript Inheritance: Object.create vs. new
Dalam JavaScript, warisan boleh dicapai melalui pelbagai kaedah. Dua pendekatan yang biasa dibincangkan ialah menggunakan kata kunci baharu dan Object.create. Apabila meneroka warisan, jumlah pilihan yang tersedia boleh menjadi membingungkan.
Untuk menjelaskan cara yang paling diterima untuk mencapai warisan dalam JavaScript, mari kita terokai perbezaan antara Object.create dan baharu.
Object.create
Object.create digunakan untuk mencipta objek baharu yang diwarisi daripada objek lain. Ia tidak menggunakan fungsi pembina objek induk. Ini berguna apabila anda hanya mahu mencipta objek baharu yang mewarisi sifat dan kaedah tertentu daripada objek induk.
const baseModel = { property1: "value1", method1: function() {} }; const newModel = Object.create(baseModel);
Dalam contoh ini, newModel mewarisi sifat1 dan kaedah1 daripada baseModel.
baharu
Kata kunci baharu memanggil fungsi pembina kelas atau objek dan mencipta tika baharu bagi kelas atau objek itu. Ia menggunakan fungsi pembina dan dengan itu memulakan objek baharu dengan sifat dan kaedah tertentu.
class BaseModel { constructor(property1) { this.property1 = property1; } method1() {} } const newModel = new BaseModel("value1");
Dalam contoh ini, newModel ialah contoh kelas BaseModel dengan property1 dimulakan kepada "value1".
Memilih Pendekatan yang Tepat
Pilihan antara Object.create dan new bergantung pada sama ada anda perlu mencipta objek baharu yang mewarisi sifat dan kaedah atau menggunakan fungsi pembina induk objek.
Dalam senario yang diberikan, anda ingin mempunyai Model objek asas yang anda boleh lanjutkan dengan RestModel atau LocalStorageModel. Menggunakan Object.create (atau shimnya) ialah cara yang betul kerana anda tidak mahu mencipta contoh baharu Model dan memanggil pembinanya.
RestModel.prototype = Object.create(Model.prototype);
Jika anda mahu memanggil pembina Model pada RestModels, gunakan call() atau apply() sebaliknya:
function RestModel() { Model.call(this); // apply Model's constructor on the new object ... }
Atas ialah kandungan terperinci Object.create vs. baru: Bila Menggunakan Mana untuk Pewarisan JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!