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

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

Susan Sarandon
Susan Sarandonasal
2024-12-11 19:04:13786semak imbas

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

Ungkapan Fungsi dan Gelagat Statik dalam JavaScript

Apabila menggunakan kata kunci baharu dengan ungkapan fungsi JavaScript, sesetengah pembangun mungkin tersilap percaya bahawa hasil objek berkelakuan statik. Walau bagaimanapun, andaian ini tidak tepat sepenuhnya.

Kata kunci baharu mencipta tika baharu objek dan ungkapan fungsi menjadi pembina untuk contoh itu. Walaupun objek yang terhasil mungkin mempamerkan beberapa gelagat seperti statik, seperti boleh diakses tanpa instantiasi, ia masih mempunyai sifat pembina yang menunjuk kepada fungsi tanpa nama.

Pertimbangkan contoh yang disediakan:

var gameData = new function () {
  // ...
};

Walaupun kata kunci baharu digunakan, anda masih boleh membuat instantiate objek tambahan menggunakan gameData pembina:

var gameData2 = new (gameData.constructor)();

Ini bermakna objek gameData tidak benar-benar statik. Sebaliknya, sifat pembina sedang "bocor", membenarkan berbilang kejadian dibuat. Selain itu, objek prototaip dicipta untuk gameData, yang mungkin memperkenalkan kerumitan yang tidak perlu jika pembolehubah peribadi atau warisan tidak dimaksudkan.

Untuk mencipta objek tunggal yang benar dalam JavaScript, seseorang harus mempertimbangkan untuk menggunakan corak yang berbeza seperti objek literal, mendedahkan corak modul atau fungsi pembina khusus yang menguatkuasakan satu instantiasi.

Atas ialah kandungan terperinci Adakah Ungkapan Fungsi JavaScript Dicipta 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