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