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
Patricia Arquetteasal
2024-12-06 21:43:15652semak imbas

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);
    }
})();

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!

Kenyataan:
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