Bagian objek
Tipe objek
Object adalah koleksi yang tidak teratur yang dapat menyimpan objek jenis apa pun, dan semua objek lain diwarisi dari objek ini.
Ada dua jenis pembuatan objek, satu adalah menggunakan operator baru dan yang lainnya adalah notasi literal.
1. Buat objek menggunakan operator baru
var obj = objek baru (); // Perhatikan kapitalisasi, Anda juga dapat menulisnya secara langsung sebagai objek ()
Perhatikan bahwa menghasilkan objek baru melalui metode objek baru () setara dengan metode literal obj = {}.
2. Buat menggunakan metode literal:
var obj = {name: 'trigkit4', usia: 21}; // titik koma yang terbaik untuk ditambahkanSaat mendeklarasikan objek objek menggunakan literal, konstruktor objek () tidak disebut (kecuali ff)
Object.Prototype Object
Semua konstruktor memiliki atribut prototipe yang menunjuk ke objek prototipe.
Objek.prototype.print = function () {console.log (this)}; var obj = objek baru (); obj.print () // objekInstance OBJ secara langsung mewarisi sifat dan metode objek.prototype
1. Objek hanyalah data khusus. Objek memiliki sifat dan metode. JavaScript adalah bahasa yang berorientasi objek, tetapi JavaScript tidak menggunakan kelas. JavaScript didasarkan pada [prototipe] [1], bukan berbasis kelas.
2. Atribut: Ini adalah variabel yang berafiliasi dengan objek tertentu. Metode: Ini adalah fungsi yang hanya dapat dipanggil oleh objek tertentu.
3. JS Objek adalah kumpulan properti dan metode. Metode adalah fungsi, yang merupakan anggota suatu objek. Atribut adalah nilai atau satu set nilai (dalam bentuk array atau objek) yang merupakan anggota suatu objek.
4.JS Objek didasarkan pada fungsi konstruktor. Saat menggunakan fungsi konstruktor untuk membuat objek baru, dapat dikatakan bahwa objek baru dipakai. Properti adalah variabel di dalam fungsi konstruktor.
Objek Instantiated Menggunakan Fungsi Konstruktor:
kucing = hewan baru ();
JavaScript adalah bahasa berbasis objek, dan hampir semua yang Anda temui adalah objek. Namun, ini bukan bahasa pemrograman berorientasi objek yang sebenarnya (OOP) karena tidak ada kelas (kelas) dalam sintaksinya.
<type skrip = "Text/JavaScript"> // Objek adalah kumpulan nama/nilai pasangan var browser = {// objek adalah nama terlampir dalam kawat gigi keriting: "firefox", kernel: "gecko"}; </scrip> // akses attribute objek browser.name // "firefox" browser "" browser "" firefox "browser" "firefox" browser "" firefox "["Objek (OBJCT) adalah kumpulan properti, masing -masing properti terdiri dari "pasangan nama/nilai". JS juga mendefinisikan objek khusus - array, yang merupakan set nilai bernomor yang dipesan.
JS juga mendefinisikan objek khusus - fungsi, fungsi adalah objek dengan kode yang dapat dieksekusi yang terkait dengannya. Ini menjalankan kode dengan memanggil fungsi dan mengembalikan hasil operasi.
Tidak ada kelas di JS, tetapi dibutuhkan nama baru yang disebut "objek prototipe", jadi "class == objek prototipe", lihat: metode penulisan kelas javascript (i)
2. Perbedaan dan koneksi antar kelas (objek prototipe) dan objek (instance)
1. Kelas (objek prototipe) adalah abstrak, konseptual, mewakili jenis barang.
2. Objeknya konkret, praktis, dan mewakili hal tertentu.
3. Kelas (objek prototipe) adalah templat untuk instance objek, dan instance objek adalah individu dari kelas.
Kesalahpahaman umum adalah bahwa nilai literal angka bukan objek. Ini karena bug di parser JavaScript yang mencoba mengurai operator titik sebagai bagian dari nilai nomen numerik titik mengambang.
Ada banyak solusi untuk membuat nilai literal angka terlihat seperti objek.
2..tostring (); // titik kedua dapat diuraikan secara normal
2.tostring (); // Perhatikan ruang sebelum titik
(2) .tostring (); // 2 dihitung terlebih dahulu
Hapus atribut
Satu -satunya cara untuk menghapus properti adalah dengan menggunakan operator hapus; Menyetel properti ke tidak terdefinisi atau nol tidak benar -benar menghapus properti, tetapi hanya menghilangkan hubungan antara properti dan nilainya.
Tiga fitur utama berorientasi objek JavaScript
Encapsulation: Tidak ada implementasi internal yang dipertimbangkan, hanya penggunaan fungsional yang dipertimbangkan
Warisan: mewarisi objek baru dari objek yang ada
Polimorfisme: apa yang disebut polimorfisme mengacu pada banyak negara yang merujuk dalam situasi yang berbeda.
1. Kemasan
Enkapsulasi berarti mengelompokkan kesamaan (termasuk atribut dan perilaku) dari hal -hal yang termasuk dalam kategori yang sama ke dalam kelas untuk memudahkan penggunaan. Misalnya, benda manusia dapat dienkapsulasi dengan cara -cara berikut:
rakyat{
Usia (atribut 1)
Tinggi (atribut 2)
Jenis kelamin (atribut tiga)
Lakukan sesuatu (salah satu perilaku)
Berjalan (perilaku 2)
Berbicara (Babak 3)
}
Manfaat enkapsulasi:
Enkapsulasi melindungi integritas data internal;
Enkapsulasi membuat refactoring objek lebih mudah;
Melemahkan kopling antara modul dan meningkatkan reusability objek;
Membantu menghindari konflik namespace;
Lihat contoh berikut:
<script type = "text/javascript"> var boy = {}; // Buat objek kosong boy.name = "xiao ming"; // tetapkan boy.age = 12 sesuai dengan properti objek prototipe, var girl = {}; girl.name = "xiaohong"; girl.age = 10; </script>Ini adalah enkapsulasi paling sederhana, merangkum dua atribut dalam satu objek. Namun, metode penulisan ini memiliki dua kelemahan. Salah satunya adalah jika Anda menghasilkan lebih banyak contoh, akan sangat merepotkan untuk menulis; Yang lainnya adalah bahwa tidak ada cara untuk mengetahui apakah ada hubungan antara instance dan prototipe.
Mode konstruktor
Untuk memecahkan masalah menghasilkan contoh dari objek prototipe, JavaScript memberikan pola konstruktor.
Yang disebut "konstruktor" sebenarnya adalah fungsi biasa, tetapi variabel ini digunakan secara internal. Menggunakan operator baru untuk konstruktor dapat menghasilkan instance, dan variabel ini akan terikat pada objek instan.
Misalnya, objek prototipe anak laki -laki dan perempuan dapat ditulis seperti ini sekarang:
<script type = "text/javascript"> function person (name, evene) {this.name = name; this.age = usia; } </script>Kami sekarang dapat menghasilkan objek instan.
<script type = "text/javascript"> var boy = orang baru ("xiao ming", 12); var girl = orang baru ("Xiao Hong", 10); waspada (boy.name); // Xiao Ming Alert (boy.age); // 12 </script>Pada saat ini, anak laki -laki dan perempuan akan secara otomatis berisi atribut konstruktor yang menunjuk pada konstruktor mereka.
waspada (boy.constructor == orang); //BENAR
peringatan (girl.constructor); // Keluarkan seluruh string kode konstruktor, coba sendiri
Pola prototipe JavaScript menetapkan bahwa masing -masing konstruktor memiliki atribut prototipe yang menunjuk ke objek lain. Semua properti dan metode objek ini akan diwarisi oleh contoh konstruktor.
Ini berarti bahwa kita dapat secara langsung mendefinisikan sifat dan metode yang tidak berubah pada objek prototipe.
<script type = "text/javascript"> function person (name, evene) {this.name = name; this.age = age;} person.protype.type = "Human"; person.protype.eat = function () {alert ("Eat Rice");} </script>Kemudian, hasilkan contoh:
<type skrip = "text/javascript"> var boy = orang baru ("xiao ming", "12"); var girl = orang baru ("xiao hong", "10"); waspada (boy.type); // human boy.eat (); // eat </script>Pada saat ini, metode Atribut dan EAT () dari semua contoh sebenarnya adalah alamat memori yang sama, menunjuk pada objek prototipe, sehingga meningkatkan efisiensi operasi.
peringatan (boy.eat == girl.eat); //BENAR
Properti prototipe adalah properti bawaan yang menentukan fungsi konstruktor yang diperluas oleh objek.
Kode berikut menambahkan ukuran atribut baru ke fungsi konstruktor hewan, yang merupakan atribut prototipe dari objek CAT. Dengan menggunakan properti prototipe, semua objek yang memperluas fungsi konstruktor hewan dapat mengakses properti ukuran
cat = hewan baru ("kucing", "meow", "walk/run"); cat.prototype.size = "fat";Dalam hal ini, atribut ukuran semua objek hewan adalah "lemak". Prototipe default ke instance objek baru. Karena masih merupakan objek, atribut baru dapat ditambahkan ke objek. Sama seperti gaya adalah objek dalam JavaScript, Anda juga dapat terus menambahkan properti demi gaya.
<type skrip = "Text/JavaScript">/*Tentukan kelas orang*/fungsi orang (_name, _age, _salary) {// Atribut publik dari kelas orang, atribut publik kelas didefinisikan sebagai: "Ini. Nama PROPERTY" this.name = _name; // Atribut pribadi kelas orang, atribut pribadi kelas didefinisikan sebagai: "Nama atribut var" var usia = _age; var gaji = _salary; // Tentukan metode publik (metode istimewa) dari kelas orang, metode publik kelas didefinisikan sebagai: "this.functionName = function () {.....}" this.show = function () {waspada ("usia ="+usia+"/t"+"gaji ="+gaji); // mengakses properti pribadi dari kelas dalam publik dalam metode publik adalah Metode Publik adalah Gaji = "+Gaji);Ketika suatu objek mencari properti tertentu, ia pertama -tama akan melintasi propertinya sendiri. Jika tidak, itu akan terus mencari objek yang dirujuk oleh [[prototipe]]. Jika tidak, itu akan terus mencari objek yang dirujuk oleh [[prototipe]]. [[Prototipe]], dan seterusnya sampai [[prototipe]].…. [Prototipe]] tidak terdefinisi (objek [[[prototipe]] tidak terdefinisi)) tidak terdefinisi) tidak terdefinisi) tidak terdefinisi) tidak terdefinisi) tidak terdefinisi) tidak terdefinisi) tidak terdefinisi) tidak terdefinisi) tidak terdefinisi) tidak terdefinisi) tidak terdefinisi) tidak terdefinisi) tidak terdefinisi) tidak terdefinisi) tidak terdefinisi) tidak ditentukan
Sederhananya, itu untuk menyimpan referensi ke objek lain melalui objek [[prototipe]], dan cari atributnya melalui referensi ini. Ini adalah rantai prototipe.
objek nol
Fungsi JS yang menetapkan nilai nol ke variabel adalah:
Menetapkan pointer nol memudahkan untuk dipahami bahwa variabel ini disiapkan untuk menyimpan objek. Juga nyaman untuk menyesuaikan yang salah
Objek jendela global
Setiap fungsi atau variabel global dalam JavaScript adalah properti jendela.
Objek diri persis sama dengan objek jendela. Diri biasanya digunakan untuk mengkonfirmasi bahwa itu dalam bentuk saat ini.
Objek utama utama jendela adalah sebagai berikut:
Objek Dokumen JavaScript
Objek bingkai javascript
Objek Sejarah JavaScript
Objek Lokasi JavaScript
Objek JavaScript Navigator
Objek Layar JavaScript
Beberapa metode umum
valueOf () Metode: Mengembalikan nilai asli dari objek yang ditentukan
Metode split () membagi string menjadi array string dan mengembalikan array ini.
Metode indexOf () mengembalikan kejadian pertama dari nilai string yang ditentukan dalam string.
Metode substring () digunakan untuk mengekstrak karakter dalam string antara dua subskrip yang ditentukan.
Metode Substr () mengekstrak jumlah string yang ditentukan mulai dari posisi startPos dari string.
Metode gabungan () digunakan untuk memasukkan semua elemen dalam array ke dalam string.
arrayObject.noin (pembatas)
Metode Reverse () digunakan untuk membalikkan urutan elemen dalam array.
Metode SLICE () mengembalikan elemen yang dipilih dari array yang ada.
Objek literal
Literal objek adalah proses yang digunakan untuk membuat sejumlah besar properti, sebagai berikut:
<script type = "text/javascript"> var company = {name: "microsoft", usia: 39, karyawan: 99000, CEO: "nadella"}; </script>Perlu dicatat di sini bahwa atribut dan nilai atribut dipisahkan oleh Colons (:); beberapa atribut dipisahkan oleh koma (,). Objek literal juga dapat menentukan metode. Cukup tulis fungsi pada atribut objek ini. Ini adalah fungsi anonim. Anda hanya perlu menulis nama metodenya () untuk menyebutnya.
<type skrip = "Text/JavaScript"> var dog = {name: "husky", usia: 2, run: function () {return "123";}} waspada (dog.run ()); // Jika Anda memasukkan dog.run, kode untuk bagian fungsi di belakangnya akan muncul </skrip>Pembungkus Jenis Nilai Dasar
Ada lima jenis nilai dasar dalam JS: angka, string, boolean, nol dan tidak terdefinisi. Kecuali untuk nol dan tidak terdefinisi, tiga lainnya memiliki apa yang disebut objek pembungkus dasar. Nomor konstruktor bawaan (), string (), dan boolean () dapat digunakan untuk membuat objek pembungkus.
var num = new Number(10);console.log(typeof num);//object Object() method Object() // Return an empty object Object(undefined) // Return an empty object Object(null) // Return an empty object Object(1) // Equivalent to new Number(1)Object('foo')Object(true) // Equivalent to new String('foo')Object(true) // Equivalent to new Objek boolean (true) ([]) // Kembalikan objek array asli ({}) // kembalikan objek objek asli (function () {}) // kembalikan fungsi asliBagian array
1. Objek ARRAY
Objek Array: Memberikan dukungan untuk membuat array dari jenis data apa pun.
arrayobj = array baru ()
arrayobj = array baru ([ukuran])
arrayobj = array baru ([elemen0 [, elemen1 [, ... [, elemen]]]])
Definisi: var arr = [2,3,45,6]; var arr = array baru (2,4,5,7)
Tidak ada perbedaan dalam definisi antara keduanya, [] memiliki kinerja tinggi karena kodenya pendek.
Gunakan array dan literal objek: var atest = []; Saat membuat array, menggunakan array literal adalah pilihan yang baik; Demikian pula, literal objek juga dapat digunakan untuk menghemat ruang. Dua baris berikut adalah sama, tetapi gunakan objek secara literal menjadi lebih pendek:
var otest = objek baru; // Cobalah untuk tidak menggunakan var otest = {}; // pilihan terbaik, atau var 0test = [];Traversal Untuk mencapai kinerja terbaik dari array traversing, disarankan untuk menggunakan klasik untuk loop.
var list = [1, 2, 3, 4, 5, ...... 100000000]; untuk (var i = 0, l = list.length; i <l; i ++) {console.log (daftar [i]);}Kode di atas memiliki pemrosesan, yaitu untuk menyimpan panjang array melalui l = list.length.
Konstruktor array
Karena konstruktor Array agak ambigu dalam hal bagaimana menangani argumen, selalu disarankan untuk menggunakan sintaks literal array - [] - untuk membuat array.
Oleh karena itu, kode berikut akan membingungkan:
Array baru (3, 4, 5); // Hasil: [3, 4, 5]
Array Baru (3) // Hasil: [], panjang array ini adalah 3
Cobalah untuk menghindari menggunakan konstruktor array untuk membuat array baru. Dianjurkan untuk menggunakan sintaks literal array. Mereka lebih pendek dan lebih ringkas, sehingga meningkatkan keterbacaan kode.
Properti array array
Tiga properti dari array array: atribut panjang, atribut prototipe, atribut konstruktor
1. Atribut Panjang
Atribut panjang mewakili panjang array, yaitu, jumlah elemen di dalamnya. Karena indeks array selalu dimulai dari 0, batas atas dan bawah suatu array adalah: 0 dan panjang-1 masing-masing. Tidak seperti kebanyakan bahasa lain, properti panjang array JavaScript dapat berubah, yang membutuhkan perhatian khusus.
2. Atribut Prototipe
Mengembalikan referensi ke prototipe tipe objek. Atribut prototipe umum untuk objek.
Untuk objek array array, gunakan contoh berikut untuk menggambarkan tujuan atribut prototipe.
Tambahkan metode ke objek array untuk mengembalikan nilai elemen maksimum dalam array. Untuk melakukan ini, nyatakan fungsi, tambahkan ke array.prototype, dan gunakan.
function array_max () {var i, max = this [0]; untuk (i = 1; i <this.length; i ++) {if (max <this [i]) maks = ini [i]; } return max; } Array.prototype.max = array_max; var x = array baru (1,2,3,4,5,6); var y = x.max ();Setelah kode ini dieksekusi, Y menyimpan nilai maksimum dalam array x, atau 6.
3. Atribut Konstruktor
Fungsi yang mewakili pembuatan suatu objek. Deskripsi: Atribut konstruktor adalah anggota dari semua objek dengan prototipe. Mereka termasuk semua objek asli JScript kecuali objek global dan matematika. Properti konstruktor memegang referensi ke fungsi yang membangun instance objek tertentu.
Misalnya:
x = string baru ("hai"); if (x.constructor == string) // proses (kondisi benar). // atau fungsi myfunc {// func. } y = myfunc baru;if (y.constructor == myfunc) // proses (kondisi benar).
Untuk array:
y = array baru ();
Metode objek array
Metode Sort ()
tata bahasa
arrayObject.sort (sortby)
sortby opsional. Tentukan urutan penyortiran. Harus menjadi fungsi.
var arr = [11,2,28,4,5,1];
console.log (arr.sort ()); // return [1, 11, 2, 28, 4, 5]
Mengapa 11 dan 28 di sini tidak diatur secara berurutan? Ini karena sortir tanpa parameter diurutkan dalam urutan pengkodean karakter.
Jadi, bagaimana jika kita ingin menyortir elemen array dari kecil ke besar? Lihat kode berikut:
var arr = [11,2,28,4,5,1]; console.log (arr.sort (fungsi (a, b) {return ab; // return [1, 2, 4, 5, 11, 28]})));Jika Anda ingin mengurutkan berdasarkan kriteria lain, Anda perlu memberikan fungsi perbandingan yang membandingkan dua nilai dan kemudian mengembalikan angka yang menggambarkan urutan relatif dari kedua nilai tersebut. Fungsi perbandingan harus memiliki dua parameter A dan B, dan nilai pengembaliannya adalah sebagai berikut:
Jika A kurang dari B, A akan muncul sebelum B dalam array yang diurutkan, maka nilai kurang dari 0 dikembalikan.
Jika A sama dengan B, kembalikan 0.
Jika A lebih besar dari B, nilai yang lebih besar dari 0 dikembalikan.
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.