Rumah > hujung hadapan web > tutorial js > Adakah Ungkapan Fungsi JavaScript dengan `baru` Benar-benar Statik?

Adakah Ungkapan Fungsi JavaScript dengan `baru` Benar-benar Statik?

Susan Sarandon
Lepaskan: 2024-12-20 12:55:19
asal
483 orang telah melayarinya

Is a JavaScript Function Expression with `new` Truly Static?

Adakah Ungkapan Fungsi Javascript Menggunakan Kata Kunci 'baru' Benar-benar Statik?

Dalam percubaan untuk mencipta kelas seperti statik dalam Javascript tanpa menggunakan pembina atau instantiasi, kod ditulis seperti itu:

var gameData = new function () {
    //May need this later 
    this.init = function () { };

    this.storageAvailable = function () {
        if (typeof (Storage) !== "undefined") {
            return true;
        }
        else {
            return false;
        }
    };
}
Salin selepas log masuk

Andaiannya ialah kata kunci 'baru' menghalang instantiasi dan menjadikan ungkapan fungsi berkelakuan seperti kelas statik. Walau bagaimanapun, ini tidak tepat sepenuhnya.

Memahami Konsep 'Statik' dalam Javascript

Dalam Javascript, sifat atau kaedah statik tidak terikat pada contoh a kelas. Ia tergolong dalam kelas itu sendiri, tidak kira sama ada sebarang contoh wujud. Ahli statik biasanya dikongsi oleh semua kejadian kelas.

Keterbatasan Pendekatan Ungkapan Fungsi

Walaupun kata kunci 'baharu', ungkapan fungsi masih mempunyai pembina harta benda. Ini bermakna ia boleh dikembalikan semula menggunakan kod berikut:

var gameData2 = new (gameData.constructor)();
Salin selepas log masuk

Ini mencipta contoh berasingan bagi ungkapan fungsi, menafikan gelagat statik yang dimaksudkan. Selain itu, rantai prototaip mengandungi objek prototaip yang tidak berguna untuk ungkapan fungsi.

Alternatif kepada Pelaksanaan 'Statik' dalam Javascript

Untuk mencapai gelagat statik sebenar, pertimbangkan alternatif ini :

  • Objek Literal: Gunakan literal objek mudah untuk mentakrifkan sifat dan kaedah tanpa pembina.
  • Mendedahkan Corak Modul: Sertakan objek literal dalam IIFE (Ungkapan Fungsi Diminta Segera) untuk mencipta pembolehubah berskop penutupan.
  • 'Kelas' Pembina: Tentukan fungsi pembina yang mengembalikan fungsi yang sama objek tunggal selepas instantiasi.

Atas ialah kandungan terperinci Adakah Ungkapan Fungsi JavaScript dengan `baru` Benar-benar 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