Rumah > hujung hadapan web > tutorial js > Bolehkah `.apply()` Digunakan dengan Operator `new` untuk Mencipta Objek JavaScript?

Bolehkah `.apply()` Digunakan dengan Operator `new` untuk Mencipta Objek JavaScript?

Mary-Kate Olsen
Lepaskan: 2024-12-07 21:15:14
asal
805 orang telah melayarinya

Can `.apply()` be Used with the `new` Operator to Create JavaScript Objects?

Meluaskan Keupayaan .apply() dengan Operator 'baharu'

Dalam JavaScript, kaedah .apply() membenarkan fungsi untuk digunakan dengan konteks objek tertentu dan hujah yang diluluskan sebagai tatasusunan. Walau bagaimanapun, persoalan timbul: bolehkah .apply() digunakan bersama-sama dengan operator 'baru' untuk mencipta contoh objek?

Coretan kod awal yang anda berikan cuba melakukan ini, tetapi malangnya, pendekatan ini adalah tidak disokong secara asli dalam JavaScript.

Walau bagaimanapun, terdapat beberapa penyelesaian bijak yang telah dicadangkan untuk mengatasi had ini. Satu pendekatan yang sangat elegan melibatkan penggunaan Function.prototype.bind dalam ECMAScript5:

function newCall(Cls) {
    return new (Function.prototype.bind.apply(Cls, arguments));
}
Salin selepas log masuk

Fungsi ini menerima kelas atau pembina sebagai hujah pertamanya, bersama-sama dengan sebarang argumen tambahan yang harus dihantar kepada pembina. Ia kemudiannya menggunakan Function.prototype.bind untuk mencipta fungsi baharu yang mempunyai konteks yang sama dengan pembina dan argumen tambahan yang didahulukan. Akhir sekali, kata kunci 'baru' digunakan untuk mencipta contoh objek baharu berdasarkan fungsi terikat ini.

Satu lagi penyelesaian yang mungkin melibatkan penggunaan fungsi eval():

function evalConstructor(str, args) {
    return eval('new (' + str + ')(' + args + ')');
}
Salin selepas log masuk

Fungsi ini memerlukan ungkapan rentetan yang mewakili pembina dan pelbagai hujah, dan kemudian menilai rentetan itu sebagai ungkapan JavaScript. Kod yang terhasil pada asasnya adalah sama seperti menggunakan operator baharu secara langsung, tetapi ia membolehkan anda menghantar bilangan argumen yang berubah-ubah.

Penyelesaian ini menyediakan cara yang mudah untuk mencipta kejadian objek dengan bilangan argumen yang berubah-ubah, meningkatkan kefungsian mekanisme pembina JavaScript.

Atas ialah kandungan terperinci Bolehkah `.apply()` Digunakan dengan Operator `new` untuk Mencipta Objek JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan