Saya telah menggunakan JS untuk menulis metode berorientasi objek yang benar sendiri. Saya mengalami masalah, yaitu untuk mendefinisikan metode, sebagai berikut:
Salinan kode adalah sebagai berikut:
function listCommon2 (pertama, kedua, ketiga)
{
this.first = function ()
{
alert ("First do"+pertama);
}
}
ListCommon2.do1 = fungsi (pertama)
{
// this.first ();
alert ("First do"+pertama);
}
ListCommon2.prototype.do2 = fungsi (pertama)
{
// this.first ();
alert ("First do"+pertama);
}
Apa perbedaan antara kedua metode tersebut? Apa fungsi menggunakan prototipe atau tidak?
Kode Uji:
Salinan kode adalah sebagai berikut:
var t1 = new listCommon2 ("boil air 1", "buatan teh 1", "minuman 1");
// t1.do1 (); // terjadi kesalahan saat panggilan
ListCommon2.do1 ("Air Rebus 1");
var t2 = new ListCommon2 ("Boil Water 2", "Beli Teh 2", "Minum 2");
t2.do2 ("air mendidih 2"); //
// listCommon2.do2 ("boil air 1"); // Terjadi kesalahan dalam panggilan
Setelah pengujian, ditemukan bahwa metode yang tidak menggunakan prototipe setara dengan metode statis kelas, sehingga dapat dipanggil dengan cara ini, listCommon2.do1 ("air mendidih 1");, jika dipanggil dengan cara ini, kesalahan akan terjadi, t1.do1 ();
Sebaliknya, metode yang menggunakan prototipe setara dengan metode instance kelas dan tidak dapat digunakan setelah yang baru. ListCommon2.do2 ("Rebus air 1"); Ini akan menyebabkan kesalahan.
Kesimpulan: Metode yang didefinisikan menggunakan prototipe setara dengan metode instance suatu kelas dan harus digunakan setelah yang baru. Keterbatasan fungsi yang dapat dipanggil dalam fungsi juga akan mirip dengan batasan metode instance suatu kelas.
Menggunakan metode yang ditentukan tanpa menggunakan prototipe setara dengan metode statis kelas. Anda dapat menggunakannya secara langsung tanpa yang baru. Pembatasan fungsi yang dapat dipanggil dalam fungsi juga akan mirip dengan batasan metode statis kelas.
Misalnya, this.first () tidak dapat dipanggil;