Segala sesuatu dalam JavaScript adalah objek: string, array, nilai, fungsi, dll. Tidak ada konsep di JS,
Tetapi kita dapat menggunakan karakteristik gramatikal JS untuk membuat objek dengan ide kelas.
Metode asli
Salin kode kode sebagai berikut:
<type skrip = "Teks/JavaScript">
var obj = objek baru ();
obj.name = "koji";
obj.age = 21;
obj.showname = function () {// tambahkan metode ke objek
Waspada (this.name);
}
obj.showage = function () {
waspada (this.age);
}
obj.showname ();
obj.showage ();
</script>
Metode di atas menghasilkan objek melalui kata kunci baru, dan kemudian menambahkan properti dan metode karakteristik bahasa dinamis sesuai dengan JS.
Buat objek. Di antara mereka, ini adalah objek yang menyebut metode ini.
Masalah dengan cara ini adalah bahwa jika Anda perlu membuat objek beberapa kali, kode perlu diulang beberapa kali, yang tidak kondusif untuk penggunaan kembali kode.
Metode pabrik
Salin kode kode sebagai berikut:
<type skrip = "Teks/JavaScript">
fungsi createobj () {
var obj = objek baru (); // Buat objek
obj.name = "koji";
obj.age = 21;
obj.showname = function () {
Waspada (this.name);
}
obj.showage = function () {
waspada (this.age);
}
Kembalikan obj; // kembali ke objek
}
var obj1 = createobj ();
var obj2 = createobj ();
obj1.showname ();
obj2.showage ();
</script>
Metode ini meningkatkan tingkat penggunaan kembali kode, dan juga dapat mengubah metode pabrik dan melewati penugasan parameter.
Salin kode kode sebagai berikut:
<type skrip = "Teks/JavaScript">
Fungsi createobj (name, evene) {// Saat membangun objek, parameter inisialisasi dapat dilewati
var obj = objek baru (); // Buat objek
obj.name = nama;
obj.age = usia;
obj.showname = function () {
Waspada (this.name);
}
obj.showage = function () {
waspada (this.age);
}
Kembalikan obj; // kembali ke objek
}
var obj1 = createobj ("koji", 22);
var obj2 = createobj ("luo", 21);
obj1.showname ();
obj1.showage ();
obj2.showname ();
obj2.showage ();
</script>
Meskipun metode di atas dapat meningkatkan tingkat pembaruan kode, ia memiliki cacat yang besar dibandingkan dengan konsep kelas berorientasi objek. mi
Gambar relatif menekankan properti objek, dan metode objek dibagikan. Dan metode pabrik di atas untuk membuat objek satu sama lain
Objek membuat metode egois mereka sendiri. Pada saat yang sama, metode yang sama untuk membuat logika yang sama untuk setiap objek adalah pemborosan memori. Ditingkatkan sebagai berikut
Salin kode kode sebagai berikut:
<span style = "font-size: 14px;"> <script type = "text/javascript">
Fungsi createobj (name, use) {{
var obj = objek baru (); // Buat objek
obj.name = nama;
obj.age = usia;
obj.showname = ditampilkan;
obj.showage = showage;
Kembalikan obj; // kembali ke objek
}
Fungsi ditampilkan () {// fungsi juga merupakan objek
Waspada (this.name);
}
function show () {
waspada (this.age);
}
var obj1 = createobj ("koji", 22);
var obj2 = createobj ("luo", 21);
obj1.showname ();
obj1.showage ();
obj2.showname ();
obj2.showage ();
</script> </span>
Objek fungsi yang disebutkan di atas didefinisikan untuk memecahkan masalah pribadi dari berbagai objek penahan objek objek. Sekarang semua objek
Tahan referensi ke dua fungsi di atas. Namun dengan cara ini, fungsi objek telah menjadi independen dan tidak relevan dengan objek. Ini dan
Metode spesifik untuk metode spesifik yang berorientasi objek tidak memenuhi pemikiran kategori tertentu.
Metode fungsi konstruksi
Salin kode kode sebagai berikut:
<type skrip = "Teks/JavaScript">
// Tentukan konstruktor untuk menghasilkan objek yang sesuai.
Orang fungsi (nama, usia) {
// Saat menelepon orang baru, sebelum menjalankan baris kode pertama, seseorang adalah objek orang dan objek ada di dalam memori
// Tugas indeks diberikan ke kata kunci ini.
This.name = name; // Kata kunci ini tidak boleh kurang. Untuk objek saat ini, yaitu, penugasan atribut nama dari objek yang dirujuk oleh kata kunci ini
//, sebenarnya setara dengan menambahkan properti nama ke objek saat ini, dan kemudian menetapkan nilai ke atribut namanya.
this.age = usia;
this.showname = function () {// tambahkan metode ke objek saat ini
Waspada (this.name);
}
this.showage = function () {
waspada (this.age);
}
// Kembalikan objek saat ini ke variabel di sebelah kiri simbol penugasan (tidak perlu menggunakan pengembalian)
}
Var obj1 = orang baru ("koji", 22);
var obj2 = orang baru ("luo", 21);
obj1.showname ();
obj1.showage ();
obj2.showname ();
obj2.showage ();
</script>
Metode membangun fungsi sama dengan metode pabrik, dan itu akan membuat objek fungsi eksklusif untuk setiap objek. Tentu saja, Anda juga dapat meletakkan fungsi -fungsi ini
Objek didefinisikan di luar konstruktor, sehingga objek dan metode tidak tergantung satu sama lain.
Metode Prototipe: Properti Prototipe Objek yang Digunakan oleh Metode Ini
Salin kode kode sebagai berikut:
Jenis skrip = "Teks/JavaScript">
Function person () {} // tentukan fungsi udara -konfinasikan, dan tidak dapat melewati parameter
// Berikan semua metode dari semua atribut ke atribut prototipe
Orang.prototype.name = "koji";
Person.prototype.age = 22;
Person.prototype.showname = function () {// Tambahkan metode
Waspada (this.name);
}
Person.prototype.showage = function () {
waspada (this.age);
}
var obj1 = orang baru (); // menghasilkan objek orang
var obj2 = orang baru ();
obj1.showname ();
obj1.showage ();
obj2.showname ();
obj2.showage ();
</script>
Ketika objek orang dihasilkan, atribut prototipe ditetapkan untuk objek baru. Kemudian atribut dan metode dibagikan.
Masalah metode ini adalah bahwa konstruktor tidak dapat diteruskan, dan setiap objek yang baru dihasilkan memiliki nilai default. Kedua, metode berbagi apakah itu tidak dibagikan
Masalah apa pun, tetapi berbagi atribut adalah masalah, ketika atribut adalah objek yang dapat mengubah negara.
Salin kode kode sebagai berikut:
<type skrip = "Teks/JavaScript">
Function person () {} // tentukan fungsi udara -konfinasikan, dan tidak dapat melewati parameter
Person.prototype.age = 22;
Person.prototype.array = array baru ("koji", "luo");
Person.prototype.showage = function () {
waspada (this.age);
}
Person.prototype.showarray = function () {
Waspada (this.array);
}
var obj1 = orang baru (); // menghasilkan objek orang
var obj2 = orang baru ();
obj1.array.push ("kyo");
obj1.showarray ();
obj2.showarray ();
</script>
Ketika kode di atas menambahkan elemen ke atribut OBJ1 ke atribut OBJ1, elemen atribut ARRA dari OBJ2 juga mengikuti juga
Dampaknya adalah bahwa properti array objek OBJ1 dan OBJ2 mengutip objek array yang sama, jadi ubah array ini
Objek, atribut objek array secara alami akan terpengaruh secara alami
Metode konstruktor/prototipe campuran
Gunakan konstruktor untuk menentukan atribut objek, dan gunakan prototipe untuk mendefinisikan objek, sehingga atribut dapat dicapai
Berbagi pribadi, dan metode.
Salin kode kode sebagai berikut:
<type skrip = "Teks/JavaScript">
Orang fungsi (nama, usia) {
this.name = name;
this.age = usia;
this.array = array baru ("koji", "luo");
}
Person.prototype.showname = function () {
Waspada (this.name);
}
Person.prototype.showarray = function () {
Waspada (this.array);
}
Var obj1 = orang baru ("koji", 22);
var obj2 = orang baru ("luo", 21);
obj1.array.push ("kyo");
obj1.showarray ();
obj1.showname ();
obj2.showarray ();
obj2.showname ();
</script>
Setelah atribut bersifat pribadi, mengubah atribut masing -masing tidak akan mempengaruhi objek lain. Pada saat yang sama, metode ini juga dibagikan oleh masing -masing objek. Semantik,
Ini memenuhi persyaratan pemrograman objek wajah.
Prototipe dinamis
Salin kode kode sebagai berikut:
<type skrip = "Teks/JavaScript">
Orang fungsi (nama, usia) {
this.name = name;
this.age = usia;
this.array = array baru ("koji", "luo");
// Jika _Initialized dalam objek orang tidak ditentukan, itu menunjukkan bahwa itu belum menambahkan metode ke prototipe orang
Ifof Person._initialized == "diremehkan")
{{
Person.prototype.showname = function () {
Waspada (this.name);
}
Person.prototype.showarray = function () {
Waspada (this.array);
}
Orang._initialized = true;
}
}
Var obj1 = orang baru ("koji", 22);
var obj2 = orang baru ("luo", 21);
obj1.array.push ("kyo");
obj1.showarray ();
obj1.showname ();
obj2.showarray ();
obj2.showname ();
</script>
Metode ini mirip dengan konstruktor/prototipe. Masukkan saja metode ini ke dalam konstruktor, sementara pada saat yang sama
Atribut ditambahkan ke orang fungsi untuk memastikan bahwa pernyataan IF hanya dapat berhasil dieksekusi sekali
Yang paling banyak digunakan dalam aplikasi praktis adalah metode konstruktor/prototipe. Metode prototipe dinamis juga sangat populer, ia memiliki fungsi dan struktur
Metode fungsi/prototipe setara. Jangan gunakan metode konstruktor atau prototipe saja.