JS adalah bahasa berbasis objek yang dapat mensimulasikan bahasa yang berorientasi objek seperti Java | C ++ menggunakan ide yang berorientasi objek.
• Berorientasi pada proses
◦ Ikuti langkah -langkah untuk menyelesaikan masalah
• Berorientasi objek
◦Fokus pada objek (konten dan peran) yang diperlukan untuk menyelesaikan masalah, dan kemudian memanggil metode yang relevan sesuai dengan aturan tertentu sesuai dengan logika bisnis.
Objek dibagi menjadi objek sistem dan objek kustom. Kita dapat membuat objek sistem dengan memanggil konstruktor sistem, seperti array | tanggal, dll. Objek kustom harus dibuat sendiri dan tidak dapat dibuat menggunakan fungsi sistem.
JavaScript Buat Objek
1. Buat secara langsung
// Buat langsung // js Buat objek // 1: Buat objek kosong var person1 = objek baru (); // 2: Tambahkan properti dan metode yang diperlukan dari objek ke dalam person1.name = "ailer"; konsol .log (person1.name); person1.gender = "pria"; // 3: Metode ditambahkan ke objek ini | (fungsi) person1. manajer = fungsi () {konsol .log ("Ailer adalah nama bahasa Inggris saya"); } // 4: Metode objek panggilan: Objek. nama metode (); person1.Manager (); // Fungsi | Metode? Ketika suatu fungsi milik suatu objek, fungsi tersebut milik metode di bawah objek ini; Fungsi dipanggil melalui nama metode; // Variabel | Atribut? Ketika suatu variabel milik objek tertentu, variabel adalah metode di bawah objek ini. Variabel panggilan dengan nama atribut. // Tingkatkan orang1.age = "6"; // ubah orang1.name = "lemon"; // periksa konsol .log (person1.name); // hapus orang1.age; konsol .log (person1.age); ==> tidak terdefinisi // Jenis referensi, alamat penyimpanan // Jenis Dasar: Store Nilai Bendera Bit/* var arr1 = [1,2,3,4] var arr2 = [5, 6, 7,9]; var arr2 = arr1; // arr2 [0] = 10; // Ubah nilai di ARR2, ARR1 juga mengubah peringatan (ARR1 [0]); // ===> 10 Jenis referensi*/var per2 = objek baru (); per2.name = "Relia"; per2.age = "18"; per2.gender = "wanita"; per2.hobby = "lemon"; // 1: Akses properti melalui. (titik sintaks) // 2: akses properti objek melalui [] (braket persegi); Kurung persegi harus berupa string atribut atau variabel yang menyimpan string atribut | Gunakan braket persegi var n = "name" //console.log(per2ajah"name"$);//double Quotes Console .log (per2 [n]); untuk (properti var di per2) {// console.log (per2 [properti]); }Meskipun intuitif, kode ini berlebihan saat membuat banyak objek
2. Buat menggunakan fungsi (mode pabrik)
Untuk memecahkan masalah beberapa deklarasi objek yang serupa, kita dapat menggunakan metode yang disebut pola pabrik, yaitu untuk menyelesaikan masalah instantiating objek dengan sejumlah besar duplikasi.
// Tentukan createPerson fungsi konstruktor (nama, usia) {// Buat objek kosong baru var Person = objek baru; // Tambahkan atribut | Metode person.name = name; person.age = usia; orang. manajer = fungsi () {konsol .log ("ai"); } // return return orang; } var per1 = createPerson ("aier", 12); konsol .log (per1.name); var per2 = createPerson ("Lemon", 23); konsol .log (per2.age); console.log (per2 instance dari objek); // true console.log (per2 instance dari createPerson); // false // tidak dapat membedakan objek tipe console.log (per2.manager == per1.manager); // Salah dapat diperoleh bahwa per1 dan per2 ruang terbuka dan tertutup masing -masing masing -masing adalah ruang terbuka dan tertutup,Luar biasa: penciptaan curah dari contoh serupa
Hilang: Contoh menggunakan atribut yang sama, menyebabkan limbah memori menjadi publik dan jenis objek tidak dapat dibedakan.
3. Penciptaan literal
Luar biasa: sederhana dan langsung
Hilang: Tidak dapat membangun objek serupa dalam batch
// Objek yang dibuat oleh literal tidak menunjukkan contoh, tetapi untuk objek // buat var per1 = {name: "ailer", konstruktor: per1, usia: 12, jenis kelamin: "wanita", hobi: "mainkan", makan: function () {console.log (this.name); }} per1.eat (); // ailer per1.name = "lemon"; per1.eat (); // lemon console.log (typeof per1); // objek console.log (per1.constructor == objek); // true4. Konstruktor BARU
// Konstruktor membuat objek, dan objek anaknya tidak dikenali dengan contoh. Semua dibuat dengan objek baru+OBJ // diakui, tetapi beberapa area kode masih sia -sia; ==> Produce Prototipe Creation // Buat Objek JS Baru+Konstruktor // 1: Buat Konstruktor | Biasanya, huruf pertama adalah createPerson fungsi yang dikapitalisasi (nama, usia) {// 2: Affix atribut | Metode objek pada penunjuk ini. Ketika fungsi dipanggil untuk membuat objek, pointer ini menunjuk ke objek baru ini; // Ini ditambahkan ke objek ini this.name = name; this.age = usia; /*this.speak = function () {// Di sini ini juga menunjuk pada objek console.log (this.name+"hello"); }} /* CreatePerson.prototype.gender = "20"; Createperson.prototype. ea = function () {konsol .log (this.name+ "sfd"); }*/// __proto__: IS: Atribut prototipe dalam objek instan, menunjuk ke objek prototipe yang sesuai dengan konstruktor yang sesuai // [[prototipe]] // panggil var per1 = createPerson baru ("ailer", "20"); var per2 = createPerson baru ("Relia", "18"); konsol .log (per1 instance dari createPerson); // == konsol sejati .log (per2 instance dari createPerson); // ==> konsol sejati .log (per1.speak == per2.speak); // == Salah berarti bahwa sistem telah membuka dua area kode yang berbeda, menyebabkan limbah memori.Lebih nyaman untuk membuat literal, sehingga menghasilkan konstruktor, konstruktor normal (pola pabrik), dan instance sub-objek tidak dikenali dan memori terbuang. Gunakan konstruktor+ baru, dan sub-objek dikenali, tetapi beberapa kode masih diduplikasi, memori terbuang, dan kode prototipe dihasilkan untuk menyelesaikannya.
5. Mode Prototipe
function createAnimal (name, usia) {//1.2: bind parameter eksternal ke atribut instance this.name = name; this.age = usia; } //1.3 mengikat atribut yang sama pada prototipe (atribut prototipe, metode prototipe) createanimal.prototype.gender = "jantan"; Createanimal.prototype.style = function () {console.log (this.name + "ailers"); }; // 2: Hubungi konstruktor untuk membuat objek var cat1 = createanimal baru ("xiaohua", "2"); var cat2 = createanimal baru ("xiaohua", "2"); cat1.style (); console.log (cat1.style == cat2.style); // Metode ini merujuk alamat yang sama, letakkan atribut dalam objek prototipe untuk menyimpan alamat // instanceof dapat menentukan objek mana yang termasuk dalam [fungsi] // pembangun konstruktor juga dapat menggunakan objek yang dimiliki oleh konstruktor/konstantor. Perbedaan antara Console.log (CAT1 Instanceof CreateAnimal); // True Console.log (CAT1 Instanceof Object); // True Console.log (CAT1 Instanceof Object); // True Console.log (cat1.constructor == CreateAnimal); // True console.log (cat1.constructor == objek); // == false // Prototipe konstruktor juga memiliki atribut konstruktor yang mengacu pada fungsi konstruktor. Atribut ini adalah atribut instance atau prototipe // alert ("name" di cat1) // true // alert ("gender" dalam cat1); // true // hasownproperty: untuk menentukan apakah properti tertentu adalah atribut instance atau diwarisi dari atribut prototipe jika benar, hal lain tidak ada | tidak mengembalikan false; console.log (cat1.hasownproperty ("aaa")); // false properti yang tidak ada mengembalikan false console.log (cat1.hasownproperty ("name")); // true instance consol adalah prototipe class alat properti console.log (isPrototype ("gender", cat1)); // fungsi true isPrototype (prostring, obj) {if (scring in obj) {if (! obj.hasownproperty (prostring)) {return true; } else {return false; }} else {return false; }}/*function isProperty (objek, properti) {// menilai apakah ada properti dalam prototipe return! Object.hasownproperty (properti) && (properti di objek);}*//Mode prototipe dinamis
// inisialisasi fungsi prototipe per (nama, usia, jenis kelamin) {this.name = name; this.age = usia; this.gender = jenis kelamin; // Jalankan hanya sekali saat menginisialisasi prototipe if (typeof this.sayName! = "Function") {person.prototype.sayname = function () {waspada (this.name); }}}Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.