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
Lepaskan: 2024-12-15 08:34:15
asal
957 orang telah melayarinya

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

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

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!

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