Fungsi: Prototipe
Setiap konstruktor memiliki properti yang disebut prototipe (prototipe, tidak lagi diterjemahkan di bawah ini, gunakan teks aslinya). Properti ini sangat berguna: mendeklarasikan variabel atau fungsi umum untuk kelas tertentu.
Definisi prototipe
Anda tidak perlu secara eksplisit menyatakan properti prototipe, karena ada di setiap konstruktor. Anda dapat melihat contoh berikut:
Contoh PT1
Salinan kode adalah sebagai berikut:
tes fungsi ()
{
}
peringatan (test.prototype); // output "objek"
Tambahkan Properti ke Prototipe
Seperti yang Anda lihat di atas, prototipe adalah objek, sehingga Anda dapat menambahkan properti ke dalamnya. Atribut yang Anda tambahkan ke prototipe akan menjadi atribut umum untuk objek yang dibuat menggunakan konstruktor ini.
Misalnya, saya memiliki ikan tipe data di bawah ini, dan saya ingin semua ikan memiliki sifat -sifat ini: livesin = "air" dan harga = 20; Untuk mencapai ini, saya dapat menambahkan sifat -sifat itu ke prototipe ikan konstruktor.
Contoh PT2
Salinan kode adalah sebagai berikut:
Fungsi ikan (nama, warna)
{
this.name = name;
this.color = warna;
}
Fish.prototype.livesin = "air";
Fish.prototype.price = 20;
Selanjutnya mari kita buat beberapa ikan:
Salinan kode adalah sebagai berikut:
var fish1 = ikan baru ("mackarel", "abu -abu");
var fish2 = ikan baru ("ikan mas", "oranye");
var fish3 = ikan baru ("salmon", "putih");
Mari kita lihat properti apa itu ikan:
Salinan kode adalah sebagai berikut:
untuk (int i = 1; i <= 3; i ++)
{
var fish = eval_r ("fish"+i); // Saya hanya mendapatkan pointer ke ikan ini
waspada (fish.name+","+fish.color+","+fish.livesin+","+fish.price);
}
Outputnya harus:
Salinan kode adalah sebagai berikut:
"Mackarel, abu -abu, air, 20"
"Ikan mas, jeruk, air, 20"
"Salmon, air putih, 20"
Anda melihat bahwa semua ikan memiliki atribut kehidupan dan harga, dan kami bahkan tidak secara khusus menyatakan atribut ini untuk setiap ikan yang berbeda. Pada saat ini, ketika suatu objek dibuat, konstruktor akan menetapkan prototipe atributnya ke atribut internal objek baru __proto__. __Proto__ ini digunakan oleh objek ini untuk menemukan propertinya.
Anda juga dapat menggunakan prototipe untuk menambahkan fungsi umum ke semua objek. Ini memiliki satu keuntungan: Anda tidak perlu membuat dan menginisialisasi fungsi ini setiap kali Anda membuat objek. Untuk menjelaskan ini, mari kita lihat contoh dt9 lagi dan tulis ulang menggunakan prototipe:
Gunakan prototipe untuk menambahkan fungsi ke objek
Contoh PT3
Salinan kode adalah sebagai berikut:
Fungsi Karyawan (Nama, Gaji)
{
this.name = name;
this.salary = gaji;
}
Karyawan.prototype.getSalary = function getSalaryFunction ()
{
kembalikan ini.salary;
}
Karyawan.prototype.addsalary = fungsi addSalaryFunction (penambahan)
{
this.salary = this.salary+penambahan;
}
Kita dapat membuat objek seperti biasanya:
Salinan kode adalah sebagai berikut:
var boss1 = karyawan baru ("Joan", 200000);
var boss2 = karyawan baru ("kim", 100000);
var boss3 = karyawan baru ("sam", 150000);
Dan verifikasi:
Salinan kode adalah sebagai berikut:
alert (boss1.getSalary ()); // output 200000
alert (boss2.getsalary ()); // output 100000
alert (boss3getsalary ()); // Output 150000
Berikut adalah diagram untuk menggambarkan cara kerja prototipe. Setiap contoh objek ini (Boss1, Boss2, Boss3) memiliki properti internal yang disebut __proto__, yang menunjuk pada prototipe properti dari konstruktornya (karyawan). Saat Anda menjalankan GetSalary atau AddSalary, objek ini akan menemukan dan menjalankan kode ini di __proto__ -nya. Perhatikan ini: Tidak ada salinan kode di sini (bandingkan dengan contoh bagan dt8).