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
Lepaskan: 2024-12-11 19:04:13
asal
826 orang telah melayarinya

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

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

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

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!

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