Saat ini, banyak orang menggunakan objek JS untuk mengimplementasikan kode setelah mempelajari JSP, tetapi dalam JavaScript, objek JS adalah bahasa yang dinamis. Banyak teman yang baru memulai akan penasaran tentang apa metode penulisan javascript yang berorientasi objek? Apa bedanya? Izinkan saya sekarang menjelaskan metode penulisan dan perbedaan yang berorientasi objek JavaScript.
Di JS, umumnya ada dua cara untuk mengimplementasikan OOP:
Yang pertama: Gunakan kata kunci ini
fungsi class1 ()
{
this.onClick = function (e)
{
untuk (var i = 0; i <1000; i ++)
{
var a = tanggal baru ();
}
}
}
Menggunakan ini. Metode dapat menambahkan properti dan metode ke objek secara fleksibel, dan mirip dengan sebagian besar bahasa OOP, dan bahkan dapat ditambahkan selama operasi.
Jenis kedua: Gunakan kata kunci prototipe
fungsi clickfunc (e)
{
untuk (var i = 0; i <1000; i ++)
{
var a = tanggal baru ();
}
}
fungsi class2 ()
{
}
Class2.prototype.onClick = clickfunc;
Dalam hal penggunaan, tidak ada yang pertama yang tampaknya fleksibel. Namun, sebelum suatu objek baru, Anda juga dapat menambahkan properti dan metode objek kapan saja.
Tetapi mereka tidak setara. Relatif berbicara, saya lebih suka yang pertama karena metode pertama relatif terkonsentrasi dan lebih mudah untuk membaca kode. Namun, saat berjalan, efisiensi operasi mereka sangat bervariasi. Mari kita lihat kode uji di bawah ini:
var total = array baru ();
function test1 ()
{
var a = tanggal baru ();
untuk (var i = 0; i <10000; i ++)
{
var c = class1 () baru;
//total.push(c);
}
var b = tanggal baru ();
alert (b.gettime ()-a.getTime ());
}
fungsi test2 ()
{
var a = tanggal baru ();
untuk (var i = 0; i <10000; i ++)
{
var c = class2 baru ();
//total.push(c);
}
var b = tanggal baru ();
alert (b.gettime ()-a.getTime ());
}
Langkah pertama adalah menguji waktu eksekusi: Ditemukan bahwa test1 () membutuhkan 142ms, sedangkan test2 () hanya membutuhkan 50 ms. Dalam hal efisiensi waktu, metode prototipe lebih efisien dari ini.
Langkah kedua dari objek JavaScript adalah untuk menguji penggunaan memori, menghapus komentar pada total.push (c); total.push (c); Sehingga mereka ditambahkan ke array untuk mencegah objek yang tidak direferensikan menjadi GC ketika ada banyak objek saat dibuat. Akibatnya, ditemukan bahwa kesenjangan itu tidak terlalu besar. Metode pertama memakan dua puluh atau tiga puluh m memori, sedangkan metode kedua hanya membutuhkan lebih dari seratus K.
JavaScript Buat Objek
Menyebabkan kesimpulan:
Saat memproses kedua kode ini, tipe pertama adalah JS parser, yang menciptakan metode terpisah untuk setiap objek, yang meningkatkan overhead memori dan meningkatkan waktu berjalan saat membuat metode. Tipe kedua adalah bahwa parser JS, seperti kebanyakan kompiler OOP, menyimpan segmen data objek dan segmen metode secara terpisah. Untuk data pribadi objek, satu salinan per objek, dan metode ini ditempatkan di segmen metode publik, sehingga waktu berjalan dan overhead memori dapat dikurangi.
Di atas adalah editor Fo Xin untuk menjelaskan perbedaan dalam metode penulisan yang berorientasi objek dan perbedaan JavaScript. Jika Anda ingin tahu lebih dalam, Anda dapat pergi ke saluran teknologi Xin untuk memahami.