Rumah >hujung hadapan web >tutorial js >Object.create() vs. SomeFunction(): Bila Menggunakan Kaedah Penciptaan Objek JavaScript Yang Mana?
Memahami Perbezaan antara Object.create() dan SomeFunction() baharu
JavaScript menyediakan dua kaedah untuk mencipta objek baharu: Object.create () dan SomeFunction() baharu Walaupun ia mungkin kelihatan serupa pada paras permukaan, ia mempamerkan perbezaan asas.
Object.create()
Object.create() mencipta objek baharu menggunakan objek sedia ada sebagai prototaipnya. Ini menunjukkan bahawa objek yang baru dicipta mewarisi sifat dan kaedah daripada objek prototaip.
New SomeFunction()
Operator baharu, diikuti dengan panggilan fungsi, mencipta contoh baharu sesuatu objek. Tidak seperti Object.create(), ia tidak mewujudkan rantaian prototaip dengan sifat prototaip fungsi. Sebaliknya, fungsi itu sendiri berfungsi sebagai pembina untuk objek baharu, yang dikembalikan semasa pelaksanaan.
Perbezaan dan Senario Penggunaan
Warisan Prototaip: Object.create() mendayakan warisan prototaip, membenarkan objek mewarisi tingkah laku dan sifat daripada prototaip mereka. Ini berguna apabila mencipta hierarki objek dengan fungsi yang dikongsi. new SomeFunction() tidak mencipta rantai prototaip.
Fungsi Pembina: SomeFunction() baharu membenarkan penggunaan fungsi pembina, yang boleh digunakan untuk memulakan dan mengkonfigurasi objek yang baru dibuat. Object.create() tidak menyediakan kemudahan ini.
Berurusan dengan Skop: Object.create() bergantung pada skop leksikal, yang bermaksud fungsi bersarang yang ditakrifkan dalam objek prototaip akan mempunyai akses kepada skop luar. SomeFunction() baharu menggunakan skop blok, menghalang fungsi bersarang daripada mengakses skop luar.
Contoh
Pertimbangkan kod berikut:
var test = { val: 1, func: function() { return this.val; } }; var testA = Object.create(test); testA.val = 2; console.log(test.func()); // 1 console.log(testA.func()); // 2
Di sini, Object.create() digunakan untuk mewujudkan rantaian prototaip. testA mewarisi sifat dan kaedah ujian.
var otherTest = function() { this.val = 1; this.func = function() { return this.val; }; }; var otherTestA = new otherTest(); var otherTestB = new otherTest(); otherTestB.val = 2; console.log(otherTestA.val); // 1 console.log(otherTestB.val); // 2
Dalam contoh ini, SomeFunction() baharu digunakan untuk mencipta dua tika bagi fungsi Test yang lain. Mereka tidak berkongsi rantai prototaip dan dianggap sebagai objek yang berbeza.
Kesimpulan
Object.create() dan SomeFunction() baharu menyediakan tujuan yang berbeza dalam JavaScript. Object.create() menetapkan warisan prototaip, manakala SomeFunction() baharu membenarkan penggunaan fungsi pembina dan menghapuskan keperluan untuk rantaian prototaip eksplisit. Pilihan kaedah untuk digunakan bergantung pada keperluan khusus dan corak warisan yang diingini dalam aplikasi.
Atas ialah kandungan terperinci Object.create() vs. SomeFunction(): Bila Menggunakan Kaedah Penciptaan Objek JavaScript Yang Mana?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!