Ada banyak cara untuk mendefinisikan kelas di JS:
1. Metode pabrik
Salinan kode adalah sebagai berikut:
function car () {
var ocar = objek baru;
ocar.color = "biru";
ocar.doors = 4;
ocar.showcolor = function () {
Document.write (this.color)
};
mengembalikan ocar;
}
var car1 = car ();
var car2 = car ();
Ketika fungsi ini dipanggil, objek baru dibuat dan semua properti dan metode ditetapkan. Gunakan fungsi ini untuk membuat 2 objek dengan properti yang persis sama. Tentu saja, saudara perempuan saya dapat memodifikasi metode ini dengan memberikan parameter padanya.
Salinan kode adalah sebagai berikut:
mobil fungsi (warna, pintu) {
var ocar = objek baru;
ocar.color = warna;
ocar.doors = pintu;
ocar.showcolor = function () {
Document.write (this.color)
};
mengembalikan ocar;
}
var car1 = mobil ("merah", 4);
var car2 = mobil ("biru", 4);
car1.showcolor () // output: "merah"
car2.showcolor () // output: "biru"
Sekarang Anda bisa mendapatkan objek dengan nilai yang berbeda dengan memberikan parameter yang berbeda ke fungsi.
Dalam contoh sebelumnya, setiap kali fungsi mobil () disebut, showColor () dibuat, yang berarti bahwa setiap objek memiliki metode showColor () sendiri.
Namun pada kenyataannya, setiap objek berbagi fungsi yang sama.
Meskipun metode dapat didefinisikan di luar fungsi, kemudian dengan mengarahkan sifat fungsi ke metode.
Salinan kode adalah sebagai berikut:
function showColor () {
waspada (this.color);
}
function car () {
var ocar = objek baru ();
ocar.color = warna;
ocar.doors = pintu;
ocar.showcolor = showcolor;
mengembalikan ocar;
}
Tapi ini tidak terlihat seperti metode fungsi.
2. Metode Konstruktor
Metode konstruktor sesederhana metode pabrik, seperti yang ditunjukkan di bawah ini:
Salinan kode adalah sebagai berikut:
mobil fungsi (warna, pintu) {
this.color = warna;
this.doors = door;
this.showcolor = function () {
waspada (this.color)
};
}
var car1 = mobil baru ("merah", 4);
var car2 = mobil baru ("biru", 4);
Anda dapat melihat bahwa metode konstruktor tidak membuat objek di dalam fungsi, dan kata kunci ini digunakan. Karena suatu objek telah dibuat saat memanggil konstruktor, dan ini hanya dapat digunakan untuk mengakses properti objek dalam fungsi.
Sekarang menggunakan baru untuk membuat objek, sepertinya itu! Tapi itu sama dengan pabrik. Setiap panggilan membuat metode sendiri untuk objek.
3. Metode prototipe
Metode ini memanfaatkan atribut prototipe objek. Pertama, buat nama kelas dengan fungsi kosong, dan kemudian semua atribut dan metode ditetapkan ke atribut prototipe.
Salinan kode adalah sebagai berikut:
function car () {
}
Car.prototype.color = "merah";
Car.prototype.doors = 4;
Car.prototype.showcolor = function () {
waspada (this.color);
}
var car1 = mobil baru ();
var car2 = mobil baru ();
Dalam kode ini, fungsi kosong pertama kali didefinisikan, dan kemudian properti objek didefinisikan melalui atribut prototipe. Ketika fungsi ini dipanggil, semua properti prototipe akan ditugaskan ke objek yang akan dibuat segera. Semua objek dalam fungsi ini menyimpan petunjuk untuk menampilkanColor (), yang secara sintaksis tampaknya termasuk objek yang sama.
Namun, fungsi ini tidak memiliki parameter, dan atribut tidak dapat diinisialisasi dengan melewati parameter. Nilai default atribut harus diubah setelah objek dibuat.
Masalah yang sangat serius dengan metode prototipe adalah bahwa ketika atribut menunjuk ke suatu objek, seperti array.
Salinan kode adalah sebagai berikut:
function car () {
}
Car.prototype.color = "merah";
Car.prototype.doors = 4;
Car.prototype.arr = array baru ("a", "b");
Car.prototype.showcolor = function () {
waspada (this.color);
}
var car1 = mobil baru ();
var car2 = mobil baru ();
car1.arr.push ("cc");
peringatan (car1.arr); // Output: AA, BB, CC
peringatan (car2.arr); // Output: AA, BB, CC
Di sini, karena nilai referensi dari array, kedua objek mobil menunjuk ke array yang sama, jadi ketika nilainya ditambahkan di CAR1, Anda juga dapat melihatnya di CAR2.
Union adalah metode yang dapat membuat objek seperti bahasa pemrograman lainnya menggunakan konstruktor/prototipe. Ini adalah metode yang menggunakan konstruktor untuk mendefinisikan sifat non-fungsional objek dan menggunakan prototipe untuk mendefinisikan objek.
Salinan kode adalah sebagai berikut:
mobil fungsi (warna, pintu) {
this.color = warna;
this.doors = door;
this.arr = array baru ("aa", "bb");
}
Car.prototype.showcolor () {
waspada (this.color);
}
var car1 = mobil baru ("merah", 4);
var car2 = mobil baru ("biru", 4);
car1.arr.push ("cc");
peringatan (car1.arr); // Output: AA, BB, CC
peringatan (car2.arr); // Output: AA, BB
5. Metode Prototipe Dinamis
Metode prototipe dinamis mirip dengan metode konstruktor/prototipe campuran. Satu -satunya perbedaan adalah posisi yang diberikan pada metode objek.
Salinan kode adalah sebagai berikut:
mobil fungsi (warna, pintu) {
this.color = warna;
this.doors = door;
this.arr = array baru ("aa", "bb");
if (typeof car._initialized == "tidak terdefinisi") {
Car.prototype.showcolor = function () {
waspada (this.color);
};
Car._initialized = true;
}
}
Metode prototipe dinamis adalah menggunakan bendera untuk menentukan apakah prototipe telah diberi metode. Ini memastikan bahwa metode ini dibuat hanya sekali
6. Metode Pabrik Campuran
Guru tujuannya menciptakan konstruktor palsu yang hanya mengembalikan contoh baru dari objek lain.
Salinan kode adalah sebagai berikut:
function car () {
var ocar = objek baru ();
ocar.color = "merah";
ocar.doors = 4;
ocar.showcolor = function () {
waspada (this.color)
};
mengembalikan ocar;
}
Berbeda dengan metode pabrik, metode ini menggunakan operator baru.
Di atas adalah semua metode membuat objek. Metode yang paling banyak digunakan adalah metode konstruktor/prototipe hybrid, dan metode prototipe dinamis juga sangat populer. Secara fungsional setara dengan metode konstruktor/prototipe.
Di atas adalah semua tentang artikel ini, saya harap Anda menyukainya.