Ungkapan Fungsi dengan Kata Kunci 'baharu': Mendedahkan Sifat Statik
Dalam JavaScript, memahami gelagat ungkapan fungsi dengan 'baharu' kata kunci adalah penting. Pertimbangkan kod berikut:
var gameData = new function () { // Function expressions require no constructor this.storageAvailable = function () { ... }; };
Adalah penting untuk ambil perhatian bahawa kata kunci 'baharu' dalam kes ini tidak membayangkan instantiasi atau membenarkan berbilang kejadian dibuat. Sebaliknya, ia hanya melaksanakan ungkapan fungsi dan memberikan objek tanpa nama yang terhasil kepada pembolehubah 'gameData'.
Salah Tanggapan Gelagat Statik
Konsep tingkah laku statik dalam C# boleh membawa kepada salah tanggapan bahawa ungkapan fungsi dalam JavaScript juga berkelakuan secara statik. Walau bagaimanapun, ini adalah tidak tepat. Kata kunci 'baru' di sini tidak menghalang penciptaan objek kedua:
var gameData2 = new (gameData.constructor)(); // Reinstantiation is possible
Selain itu, ungkapan fungsi masih mempunyai sifat pembina yang menunjuk ke fungsi tanpa nama, yang boleh diakses menggunakan 'gameData.constructor '. Ini menggagalkan tujuan kelas statik sebenar.
Alternatif kepada Gelagat Statik
Jika niatnya adalah untuk mencipta objek tunggal yang tidak boleh serta-merta, terdapat lebih sesuai alternatif untuk menggunakan ungkapan fungsi dengan 'baru':
Kesimpulannya, ungkapan fungsi dengan kata kunci 'baru' dalam JavaScript tidak mempamerkan gelagat statik kerana ia boleh digunakan beberapa kali dan mempunyai sifat pembina awam yang boleh diakses melalui 'gameData.constructor'. Untuk tingkah laku statik sebenar, pertimbangkan untuk menggunakan pendekatan alternatif seperti literal objek, corak modul mendedahkan atau corak tunggal.
Atas ialah kandungan terperinci Adakah `baru` dengan Ungkapan Fungsi JavaScript Mencipta Gelagat Statik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!