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
Susan Sarandonasal
2024-12-20 12:55:19484semak imbas

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

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

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!

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