Rumah  >  Artikel  >  hujung hadapan web  >  Pengenalan kepada kaedah umum untuk menghapuskan penutupan dalam petua JavaScript_javascript

Pengenalan kepada kaedah umum untuk menghapuskan penutupan dalam petua JavaScript_javascript

WBOY
WBOYasal
2016-05-16 16:09:061575semak imbas

Penutupan JavaScript ialah ciri yang dibangunkan secara aktif, dan ia juga merupakan ciri yang berkembang secara pasif, dalam erti kata lain, JS boleh menyelesaikan beberapa masalah dengan lebih baik, sebaliknya, untuk menyelesaikannya masalah tertentu, masalah JS, dan terpaksa menggunakan penutupan untuk hampir menyelesaikan masalah itu.

Yang terdahulu tidak akan dibincangkan di sini Jika penutupan JS dapat menyelesaikan masalah dengan lebih baik, sudah tentu lebih baik menggunakan penutupan.

Apa yang saya bincangkan adalah yang terakhir, kerana batasan JS itu sendiri, yang perlu diselesaikan dengan penutupan, seperti keperluan "pembolehubah hanya dimulakan sekali".

Bahasa konvensional diselesaikan seperti ini:

Salin kod Kod adalah seperti berikut:

kelas Kelas{
fungsi init(){
This.n = 0;
}
function func(){
Ini.n ;
Kembalikan ini.n;
}
}
var obj = Kelas baharu();

JavaScript biasanya menyelesaikan masalah ini (menggunakan penutupan):

Salin kod Kod adalah seperti berikut:

var obj = {
func : (function(){
var n = 0;
kembalikan fungsi(){
n ;
Kembalikan n;
}
})()
}

Tetapi saya lebih suka kaedah ini (menghapuskan penutupan):

Salin kod Kod adalah seperti berikut:

fungsi Kelas(){
var diri = ini;
diri.n = 0;
self.func = function(){
diri.n ;
kembalikan diri.n;
}
}
var obj = Kelas baharu();

Oleh kerana yang terakhir mempunyai kebolehskalaan yang lebih baik Apabila anda perlu melaksanakan operasi yang berbeza pada pembolehubah, yang kedua hanya boleh menentukan fungsi yang berbeza (iaitu, pengembangan linear mudah), manakala yang pertama ( penutupan) perlu ditulis semula sepenuhnya. (sebab itu anda sering mendengar perkataan pemfaktoran semula).

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