Ada banyak cara untuk membuat objek di JavaScript.
Konstruktor Objek/Objek Literal :
Mengesampingkan pola desain, metode yang paling mendasar adalah untuk pertama -tama memanggil konstruktor objek untuk membuat objek, dan kemudian menambahkan atribut ke objek.
Salinan kode adalah sebagai berikut:
var student = objek baru ();
student.name = "xiao ming";
student.age = 20;
student.getName = function () {
waspada (this.name);
}
Siswa yang akrab dengan objek JavaScript literal dapat berubah menjadi cara menulis yang lebih baik, setidaknya terlihat lebih ringkas.
Salinan kode adalah sebagai berikut:
var student = {
Nama: "Xiao Hong",
Usia: 18,
getName: function () {
waspada (this.name);
}
};
Kerugian: Salah satu kelemahan dari metode di atas adalah bahwa ketika menggunakan antarmuka yang sama untuk membuat banyak objek yang sama, sejumlah besar kode duplikat akan dihasilkan. Ini harus mudah dimengerti. Fungsi (metode atau kelas) umumnya digunakan untuk membuat metode publik. Proses pembuatan objek di atas tidak memiliki bayangan fungsi sama sekali, jadi tidak ada penggunaan kembali.
Mode Pabrik :
Pola pabrik mengabstraksi proses menciptakan objek konkret. Sama seperti kotak hitam, Anda hanya perlu memanggil fungsi (masukkan pabrik) dan lulus dalam parameter yang sesuai (berbagai bahan baku), dan objek yang sesuai (produk yang diproduksi oleh pabrik) akan keluar. Pola pabrik memecahkan masalah membuat beberapa objek serupa.
Salinan kode adalah sebagai berikut:
fungsi studentfactory (name, use) {
var student = objek baru ();
student.name = name;
student.age = usia;
student.sayname = function () {
waspada (this.name);
}
Siswa yang kembali;
}
var p1 = StudentFactory ("Ming", 20);
var p2 = StudentFactory ("Hong", 18);
Kerugian: Pola pabrik juga memiliki kerugiannya, dan kelemahan terbesar adalah masalah pengenalan jenis objek. Hanya dapat ditentukan bahwa objek adalah tipe objek (instance P1 objek), tetapi tidak mungkin untuk menentukan jenis mana itu. Siswa yang dibuat menggunakan mode pabrik sebenarnya memiliki sifat dan metode yang serupa, tetapi nilainya berbeda. Solusi yang lebih baik saat ini adalah membuat fungsi siswa sehingga semua objek milik tipe siswa. Jadi mode pabrik tidak buruk, tetapi mode konstruktor lebih baik.
Konstruktor Jenis Kustom:
Konstruktor dapat digunakan untuk membuat objek dari jenis tertentu.
Salinan kode adalah sebagai berikut:
function siswa (nama, usia) {
this.name = name;
this.age = usia;
this.sayname = function () {
waspada (this.name);
}
}
var p3 = siswa baru ("ming", 20);
var p4 = siswa baru ("hong", 18);
peringatan (P3 instance dari siswa);
alert (p3.sayname == p4.sayname); //PALSU
Kerugian: Kerugian dari konstruktor khusus adalah bahwa setiap objek akan menciptakan kembali metode sendiri. Faktanya, metode ini memiliki fungsi yang sama (seperti Sayname), tetapi mereka tidak sama (p3.sayname dan p4.sayname tidak sama).
Mode Prototipe:
Tentukan fungsi kosong dan tambahkan semua properti dan metode ke prototipe sehingga semua objek berbagi sifat dan metode ini.
Salinan kode adalah sebagai berikut:
function student () {};
Student.prototype.name = "ming";
Student.prototype.age = 20;
Student.prototype.friends = ['qi'];
Student.prototype.sayname = function () {
waspada (this.name);
};
Kerugian: Beberapa atribut tidak dapat dibagikan, dan membagikannya membawa masalah, seperti: teman. Sebagian besar teman dari setiap siswa tidak akan sama.
Kombinasi konstruktor dan prototipe:
Salinan kode adalah sebagai berikut:
Fungsi Siswa (Nama, Usia, Teman) {
this.name = name;
this.age = usia;
this.friends = teman;
}
Student.prototype = {
Konstruktor: Siswa,
SayName: function () {
waspada (this.name);
}
};
Ringkasan: Kombinasi konstruktor dan prototipe adalah metode yang diakui secara luas untuk membuat tipe kustom. Ini juga merupakan metode terbaik di antara metode di atas.
/****************************************************************************************************/
Bahkan, sudah ada banyak metode untuk membuat objek di atas, tetapi masih ada beberapa skenario khusus yang membutuhkan optimasi yang berkelanjutan.
Mode prototipe dinamis:
Ini adalah optimalisasi kombinasi konstruktor dan prototipe. Untuk atribut dan metode yang umum, jika diinisialisasi, tidak perlu mengulangi inisialisasi untuk meningkatkan efisiensi.
Salinan kode adalah sebagai berikut:
function siswa (nama, usia) {
this.name = name;
this.age = usia;
if ((typeof this.sayName)! = "function") {
Student.prototype.sayname = function () {
waspada (this.name);
}
}
}
var stu = orang baru ("ming", 20);
// peringatan (Stu instance dari siswa);
stu.sayname ();
var stunew = orang baru ("hong", 18);
// waspada (instance stud dari siswa);
stunew.sayname ();
Ketika beberapa objek siswa dibuat, metode Sayname hanya diinisialisasi sekali.
Akhirnya, ada cara lain yang sangat berguna untuk membuat objek, yaitu untuk membangun fungsi dengan aman.
Pola konstruktor yang stabil:
Ini dan baru dilarang dalam mode ini, dan semua objek tidak memiliki atribut publik. Hanya nilai variabel yang dibaca, tetapi tidak dimodifikasi.
Salinan kode adalah sebagai berikut:
//// Mode Konstruktor Stafe
function siswa (nama, usia) {
var o = objek baru ();
o.sayname = function () {
peringatan (nama);
}
kembali o;
}
var stu = siswa ("ming", 21);
stu.sayname ();
Di atas merangkum beberapa metode JavaScript umum untuk membuat objek khusus, yang sangat komprehensif. Jika Anda memiliki yang lebih baik, silakan hubungi saya. Artikel ini terus diperbarui.