Rumah >hujung hadapan web >tutorial js >Adakah `baru` dengan Ungkapan Fungsi JavaScript Mencipta Gelagat Statik?

Adakah `baru` dengan Ungkapan Fungsi JavaScript Mencipta Gelagat Statik?

Barbara Streisand
Barbara Streisandasal
2024-12-15 08:34:151044semak imbas

Does `new` with JavaScript Function Expressions Create Static Behavior?

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

  • Objek Literal: Ini adalah objek JavaScript ringkas tanpa pembina atau prototaip, memastikan keunikan.
  • Mendedahkan Corak Modul: IIFE (Ekspresi Fungsi Segera Diminta) boleh digunakan untuk membuat penutupan -pembolehubah berskop, mengembalikan objek dengan yang dikehendaki properties.
  • Singleton Pattern: Corak reka bentuk ini mencipta satu contoh terkawal kelas yang memastikan semua rujukan padanya menghala ke objek yang sama.

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!

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