Rumah >hujung hadapan web >tutorial js >Bolehkah Anda Menggunakan Operator `baru` dengan `.apply()` dalam JavaScript untuk Mencipta Objek dengan Argumen Pembolehubah?
Dalam JavaScript, mungkin wajar untuk mencipta contoh objek menggunakan operator baharu sambil menghantar bilangan argumen yang berubah-ubah kepada pembina. Walau bagaimanapun, ini tidak boleh dicapai menggunakan coretan kod yang anda berikan.
1. Pendekatan Matthew Crumley:
Penyelesaian ini melibatkan penciptaan fungsi baharu, F, yang memanjangkan prototaip Something dan menyediakan pembungkus untuk kaedah apply(). Ia boleh dilaksanakan seperti berikut:
var createSomething = (function() { function F(args) { return Something.apply(this, args); } F.prototype = Something.prototype; return function() { return new F(arguments); } })();
2. Penyelesaian ECMAScript 5:
Dengan ECMAScript 5, kaedah Function.prototype.bind boleh digunakan untuk penyelesaian yang lebih ringkas:
function newCall(Cls) { return new (Function.prototype.bind.apply(Cls, arguments)); }
Fungsi ini boleh digunakan seperti berikut:
var s = newCall(Something, a, b, c);
atau pun terus:
var s = new (Function.prototype.bind.call(Something, null, a, b, c));
Penjelasan:
Kaedah bind membolehkan kami mencipta fungsi baharu yang mempunyai konteks yang sama (nilai ini) seperti fungsi asal tetapi mengambil bilangan hujah yang terhad. Dengan menggunakan kaedah apply(), kita boleh menghantar nombor pembolehubah argumen kepada fungsi terikat. Akhir sekali, pengendali baharu boleh digunakan pada fungsi terikat untuk mencipta tika objek baharu.
Atas ialah kandungan terperinci Bolehkah Anda Menggunakan Operator `baru` dengan `.apply()` dalam JavaScript untuk Mencipta Objek dengan Argumen Pembolehubah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!