Rumah > hujung hadapan web > tutorial js > Bolehkah Anda Menggunakan `.apply()` dengan Operator `new` dalam JavaScript untuk Mencipta Objek dengan Argumen Pembolehubah?

Bolehkah Anda Menggunakan `.apply()` dengan Operator `new` dalam JavaScript untuk Mencipta Objek dengan Argumen Pembolehubah?

Linda Hamilton
Lepaskan: 2024-12-11 14:15:11
asal
704 orang telah melayarinya

Can You Use `.apply()` with the `new` Operator in JavaScript to Create Objects with Variable Arguments?

Objek Baharu dengan Argumen Pembolehubah: Demystifying .apply() dan Operator 'new'

Dalam JavaScript, membina contoh objek menggunakan operator 'baharu' biasanya dilakukan dengan terus menghantar hujah kepada pembina. Walau bagaimanapun, terdapat senario di mana seseorang mungkin ingin memberikan hujah secara dinamik. Artikel ini menjawab persoalan sama ada menggunakan '.apply()' dengan pengendali 'baru' untuk mencapai ini boleh dilaksanakan.

Penghadan .apply() dengan 'baru'

Walaupun ia serba boleh, kaedah '.apply()' tidak boleh digunakan secara langsung dengan pengendali 'baru'. Percubaan untuk berbuat demikian akan mengakibatkan tingkah laku atau ralat yang tidak dijangka.

Penyelesaian Alternatif

Menyedari keperluan untuk fungsi sedemikian, pelbagai penyelesaian inovatif telah dicadangkan oleh komuniti JavaScript.

Prototaip Fungsi

Satu pendekatan, dikreditkan kepada Matthew Crumley, menggunakan prototaip fungsi untuk mencipta penyelesaian:

var createSomething = (function() {
    function F(args) {
        return Something.apply(this, args);
    }
    F.prototype = Something.prototype;

    return function() {
        return new F(arguments);
    }
})();
Salin selepas log masuk

Penyelesaian ini berkesan mencipta fungsi baharu dengan gelagat yang diingini.

ECMAScript 5

ECMAScript 5's 'Function.prototype.bind ' menawarkan penyelesaian yang lebih bersih:

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

Kaedah ini dengan lancar berintegrasi dengan operator 'baharu' dan boleh digunakan pada semua jenis pembina, termasuk mereka yang mempunyai gelagat istimewa seperti 'Tarikh'.

Kaedah Eval (Awas)

Walaupun tidak digalakkan kerana potensi keselamatan kebimbangan, kaedah 'eval' menyediakan penyelesaian lain:

var s = eval("new Something(" + [a, b, c] + ")");
Salin selepas log masuk

Memahami Penyelesaian

Penyelesaian ini memanfaatkan kaedah bind() untuk mencipta fungsi yang menerima hujah yang diingini. Kemudian, operator 'baharu' digunakan untuk membuat instantiate objek daripada fungsi itu.

Kesimpulan

Mencipta objek dengan argumen boleh ubah menggunakan '.apply()' dan operator 'baru' memerlukan beberapa kepintaran. Dengan memanfaatkan ciri JavaScript yang tersedia, pembangun boleh melaksanakan teknik ini untuk mencapai kefungsian yang diingini.

Atas ialah kandungan terperinci Bolehkah Anda Menggunakan `.apply()` dengan Operator `new` dalam JavaScript untuk Mencipta Objek dengan Argumen Pembolehubah?. 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