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

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

Patricia Arquette
Lepaskan: 2024-12-06 21:43:15
asal
657 orang telah melayarinya

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

Menggunakan Kaedah .apply() dengan Operator baharu: Adakah Ia Boleh Dilaksanakan?

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.

Penyelesaian Alternatif

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);
    }
})();
Salin selepas log masuk

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));
}
Salin selepas log masuk

Fungsi ini boleh digunakan seperti berikut:

var s = newCall(Something, a, b, c);
Salin selepas log masuk

atau pun terus:

var s = new (Function.prototype.bind.call(Something, null, a, b, c));
Salin selepas log masuk

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!

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