Sebagai bahasa yang dinamis, objek JS dalam JavaScript memiliki tingkat kebebasan yang cukup besar dalam sintaks, sehingga menciptakan fungsi dan gaya penulisan n.
Di JS, umumnya ada dua cara untuk mengimplementasikan OOP:
Yang pertama: Gunakan kata kunci ini
functionClass1 ()
{
this.onClick = function (e)
{
untuk (vari = 0; i <1000; i ++)
{
vara = newDate ();
}
}
}
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
FunctionClickFunc (E)
{
untuk (vari = 0; i <1000; i ++)
{
vara = newDate ();
}
}
functionClass2 ()
{
}
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:
vartotal = newarray ();
functionTest1 ()
{
vara = newDate ();
untuk (vari = 0; i <10000; i ++)
{
varc = newClass1 ();
//total.push(c);
}
varb = newDate ();
alert (b.gettime ()-a.getTime ());
}
functionTest2 ()
{
vara = newDate ();
untuk (vari = 0; i <10000; i ++)
{
varc = newClass2 ();
//total.push(c);
}
varb = newDate ();
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.