


Tutorial pengenalan minimalis JavaScript (2): objek dan kemahiran functions_javascript
Membaca artikel ini memerlukan pengalaman pengaturcaraan dalam bahasa lain.
Jenis ringkas dalam JavaScript termasuk:
1
2. Rentetan
3.Boolean (benar dan salah)
4.null
5. tidak ditentukan
1. Fungsi
2. Tatasusunan
3. Ekspresi biasa
4. Objek (objek adalah objek semula jadi)
Asas Objek
Dalam JavaScript, objek ialah koleksi atribut (objek ialah tatasusunan bersekutu Setiap atribut termasuk:).
1. Nama atribut, mestilah rentetan
2. Nilai atribut, yang boleh berupa sebarang nilai kecuali
tidak ditentukan
var empty_object = {};
// "nama pertama" ialah nama atribut, "Jerome" ialah nilai atribut
"nama pertama": "Jerome",
// "nama akhir" ialah nama atribut, "Howard" ialah nilai atribut
"last-name": "Howard"
};
syarikat penerbangan: "Oceanic",
Nombor: 815,
berlepas: {
IATA: "SYD",
Masa: "2004-09-22 14:55",
bandar: "Sydney"
},
ketibaan: {
IATA: "LAX",
Masa: "2004-09-23 10:42",
Bandar: "Los Angeles"
}
};
owner.name; // "Nama5566"
pemilik ["nama"]; // "Nama5566"
owner.job; // undefined
owner.job = "coder"; // atau owner["job"] = "coder";
var pemilik = x;
owner.name = "Nama5566";
x.name; // x.name === "Nama5566"
Sifat objek boleh dipadamkan menggunakan operator padam:
Prototaip objek
Setiap objek dipautkan kepada objek prototaip dan objek boleh mewarisi sifat daripada objek prototaip. Kami mencipta objek melalui objek literal, dan objek prototaipnya ialah objek Object.prototype (Object.prototype object itu sendiri tidak mempunyai objek prototaip). Apabila kita mencipta objek, kita boleh menetapkan objek prototaip objek (kita akan membincangkan kaedah tetapan khusus kemudian). Apabila cuba untuk mendapatkan (bukan mengubah suai) sifat objek, jika harta itu tidak wujud pada objek, JavaScript akan cuba mendapatkan harta daripada objek prototaip objek Jika harta itu tidak wujud dalam objek prototaip , kemudian dari objek prototaip Objek prototaip dicari, dan seterusnya, sehingga objek prototaip Object.prototype. Berbanding dengan mendapatkan atribut, apabila kita mengubah suai atribut tertentu objek, ia tidak akan menjejaskan objek prototaip.
Asas Fungsi
Dalam JavaScript, fungsi juga merupakan objek, yang dipautkan kepada objek prototaip Function.prototype (Function.prototype dipautkan ke Object.prototype). Fungsi mempunyai sifat bernama prototaip, dan jenis nilainya ialah objek Objek ini mempunyai pembina sifat, dan nilai pembina ialah fungsi ini:
var f = function() {}
jenis f.prototaip; // 'objek'
typeof f.prototype.constructor; // 'fungsi'
f === f.prototype.constructor; // benar
Fungsi ialah objek Anda boleh menggunakan fungsi sama seperti objek, maksudnya, fungsi boleh disimpan dalam pembolehubah dan tatasusunan, dihantar ke fungsi sebagai parameter, dan fungsi boleh ditakrifkan di dalam fungsi. Sebagai nota sampingan, fungsi mempunyai dua sifat tersembunyi:
1. Konteks fungsi
2. Kod fungsi
Fungsi dicipta seperti berikut:
var f = fungsi tambah(a, b) {
Kembalikan b;
}
console.log(f); // Output [Fungsi: tambah]
Nama fungsi selepas fungsi kata kunci adalah pilihan Kami merumuskan nama fungsi terutamanya untuk beberapa tujuan:
1. Untuk panggilan rekursif
2. Digunakan oleh penyahpepijat, alat pembangunan, dsb. untuk mengenal pasti fungsi
Banyak kali kita tidak memerlukan nama fungsi Fungsi tanpa nama fungsi dipanggil fungsi tanpa nama. Senarai parameter disertakan dalam kurungan. JavaScript tidak memerlukan parameter sebenar dan parameter formal untuk dipadankan, contohnya:
var add = function(a, b) {
Kembalikan b;
}
add(1, 2, 3); // Parameter sebenar dan parameter formal tidak sepadan
Jika terdapat terlalu banyak parameter sebenar, parameter sebenar tambahan akan diabaikan Jika terdapat terlalu sedikit parameter sebenar, nilai parameter formal yang tidak ditetapkan akan tidak ditentukan. Fungsi mesti mempunyai nilai pulangan Jika nilai pulangan tidak ditentukan melalui penyata pulangan, nilai pulangan fungsi tidak ditentukan.
Fungsi dan pembolehubah luaran yang diaksesnya membentuk penutupan. Ini adalah keindahan utama JavaScript.
Panggilan fungsi
Apabila setiap fungsi dipanggil, ia akan menerima dua parameter tambahan:
1.ini
2.hujah
Nilai ini berkaitan dengan mod panggilan tertentu Terdapat empat mod panggilan dalam JavaScript:
1. Mod panggilan kaedah. Jika sifat sesuatu objek ialah fungsi, ia dipanggil kaedah. Jika kaedah dipanggil melalui o.m(args), ini ialah objek o (boleh dilihat bahawa ini dan o hanya terikat apabila panggilan dibuat), contohnya:
var obj = {
Nilai: 0,
kenaikan: fungsi(v) {
This.value = (jenis v === 'nombor' ? v : 1);
}
};
obj.increment(); // this === obj
2. Mod panggilan fungsi. Jika fungsi bukan sifat objek, ia akan dipanggil sebagai fungsi dan ini akan terikat pada objek global, contohnya:
mesej = 'Hello World';
var p = function() {
console.log(this.message);
}
p(); // Output 'Hello World'
Tingkah laku ini kadangkala mengelirukan, mari lihat contoh:
obj = {
Nilai: 0,
kenaikan: function() {
var helper = function() {
// Tambahkan 1 pada nilai dalam objek global
This.value = 1;
}
// pembantu dipanggil sebagai fungsi
// Oleh itu ini adalah objek global
pembantu();
}
};
obj.increment(); // obj.value === 0
Hasil yang diingini hendaklah:
obj = {
Nilai: 0,
kenaikan: function() {
var that = this;
var helper = function() {
That.value = 1;
}
pembantu();
}
};
obj.increment(); // obj.value === 1
3. Mod panggilan Pembina. Fungsi yang dimaksudkan untuk diawali dengan baharu dipanggil pembina, contohnya:
// Ujian dipanggil pembina
var Ujian = fungsi(rentetan) {
This.message = string;
}
var myTest = Ujian baharu("Hello World");
Fungsi boleh dipanggil dengan menambah baharu di hadapannya (fungsi sedemikian biasanya bermula dengan huruf besar Selepas menambah baharu, objek yang dipautkan kepada sifat prototaip fungsi ini akan dibuat, dan ini dalam pembina akan). menjadi objek ini.
4.gunakan mod panggilan. Kaedah penggunaan fungsi digunakan untuk memanggil fungsi, yang mempunyai dua parameter, yang pertama ialah ini, dan yang kedua ialah tatasusunan parameter, contohnya:
var add = function(a, b) {
Kembalikan b;
}
var ret = add.apply(null, [3, 4]); // ret === 7
Apabila fungsi dipanggil, kami boleh mengakses tatasusunan kelas bernama argumen (bukan tatasusunan JavaScript sebenar), yang mengandungi semua parameter sebenar, supaya kami boleh melaksanakan parameter panjang berubah:
var add = function() {
var sum = 0;
untuk (var i=0; i
}
Pulangan jumlah;
}
tambah(1, 2, 3, 4);
Pengecualian
Sekarang mari kita bincangkan tentang mekanisme pengendalian pengecualian JavaScript. Kami menggunakan pernyataan lontaran untuk membuang pengecualian dan pernyataan cuba-cache untuk menangkap dan mengendalikan pengecualian:
var add = fungsi (a, b) {
Jika (jenis a !== 'nombor' || jenis b !== 'nombor') {
// pengecualian lontaran
baling {
nama: 'TypeError',
mesej: 'tambah keperluan nombor'
};
}
Kembalikan b;
}
//Tangkap dan kendalikan pengecualian
cuba {
Tambah("tujuh");
// e ialah objek pengecualian yang dilemparkan
} tangkap (e) {
console.log(e.name ': ' e.message);
}
Tambahkan sifat pada jenis JavaScript
Pembina wujud untuk kebanyakan jenis dalam JavaScript:
1. Pembina objek ialah Objek
2. Pembina tatasusunan ialah Array
3. Pembina fungsi ialah Fungsi
4. Pembina rentetan ialah String
5. Pembina nombor ialah Nombor
6. Pembina Boolean ialah Boolean
7. Pembina ungkapan biasa ialah RegExp
Kami boleh menambah sifat (selalunya kaedah) pada prototaip pembina untuk menjadikan sifat ini tersedia kepada pembolehubah yang berkaitan:
Number.prototype.integer = function() {
Kembalikan Matematik[ini < 0 ? }
(1.1).integer(); // 1
Skop
JavaScript memerlukan fungsi untuk membina skop:
// ...
}();
//Sembunyikan nilai, tidak boleh diakses dari luar
nilai var = 0;
Kembali {
// Hanya kaedah ini boleh mengubah suai nilai
kenaikan: function() {
nilai = 1;
},
// Hanya kaedah ini boleh membaca nilai
getValue: function() {
nilai pulangan;
}
};
}();
obj.increment();
obj.getValue() === 1;
Warisi
Terdapat banyak cara untuk melaksanakan warisan dalam JavaScript.
Apabila mencipta objek, kami boleh menetapkan objek prototaip yang dikaitkan dengan objek Kami melakukan ini:
var o = Object.create({x:1, y:2});
if (typeof Object.create !== 'function') {
// Cipta kaedah Object.create
Object.create = fungsi (o) {
var F = fungsi () {};
F.prototaip = o;
//Buat objek baharu, objek prototaip objek ini ialah o
kembalikan F();
baharu };
}
Melalui kaedah Object.create kami melakukan pewarisan berasaskan prototaip: objek baharu secara langsung mewarisi sifat objek lama (berbanding dengan warisan berasaskan kelas, tidak perlu kewujudan kelas dan objek secara langsung mewarisi objek). Contoh:
var myMammal = {
nama: 'Herb the Mamalia',
Get_name: function() {
kembalikan this.name;
},
berkata: function() {
kembalikan ini.kata || }
};
// Warisi myMammal
var myCat = Object.create(myMammal);
myCat.name = 'Henrietta';
myCat.saying = 'meow';
myCat.purr = fungsi(n) {
var i, s = '';
untuk (i = 0; i < n; i = 1) {
jika (s) {
s = '-';
}
s = 'r';
}
Kembali s;
};
myCat.get_name = function() {
Kembalikan this.says() ' ' this.name ' ' this.says();
};
var mamalia = fungsi(spesifikasi) {
// iaitu objek yang dibina
var that = {};
// Kaedah awam get_name boleh diakses secara luaran
That.get_name = function() {
// spec.name tidak boleh diakses terus dari luar
pulangkan spec.name;
};
// Kaedah awam mengatakan boleh diakses secara luaran
That.says = function() {
// spec.saying tidak boleh diakses terus dari luar
kembalikan spesifikasi || };
Kembalikan itu;
};
//Buat objek mamalia
var myMammal = mamalia({nama: 'Herb'});
//fungsi kucing, digunakan untuk membina objek kucing
var cat = fungsi(spesifikasi) {
spec.saying = spec.saying ||
// kucing mewarisi daripada mamalia, jadi objek mamalia dibina dahulu
var that = mamalia(spec);
// Tambahkan purr kaedah awam
That.purr = fungsi(n) {
var i, s = '';
untuk (i = 0; i < n; i = 1) {
jika (s) {
s = '-';
}
s = 'r';
}
kembali s;
};
// Ubah suai kaedah awam get_name
That.get_name = function() {
return that.says() ' ' spec.name
' ' itu.berkata();
pulangkan itu;
};
};
//Buat objek kucing
var myCat = kucing({nama: 'Henrietta'});
Dalam corak modul, pewarisan dicapai dengan memanggil pembina. Selain itu, kita juga boleh mengakses kaedah kelas induk dalam subkelas:

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Bahasa Go menyediakan dua teknologi penciptaan fungsi dinamik: penutupan dan refleksi. penutupan membenarkan akses kepada pembolehubah dalam skop penutupan, dan refleksi boleh mencipta fungsi baharu menggunakan fungsi FuncOf. Teknologi ini berguna dalam menyesuaikan penghala HTTP, melaksanakan sistem yang sangat boleh disesuaikan dan membina komponen boleh pasang.

Dalam penamaan fungsi C++, adalah penting untuk mempertimbangkan susunan parameter untuk meningkatkan kebolehbacaan, mengurangkan ralat dan memudahkan pemfaktoran semula. Konvensyen susunan parameter biasa termasuk: tindakan-objek, objek-tindakan, makna semantik dan pematuhan perpustakaan standard. Susunan optimum bergantung pada tujuan fungsi, jenis parameter, kemungkinan kekeliruan dan konvensyen bahasa.

Kunci untuk menulis fungsi Java yang cekap dan boleh diselenggara ialah: pastikan ia mudah. Gunakan penamaan yang bermakna. Mengendalikan situasi khas. Gunakan keterlihatan yang sesuai.

1. Fungsi SUM digunakan untuk menjumlahkan nombor dalam lajur atau sekumpulan sel, contohnya: =SUM(A1:J10). 2. Fungsi AVERAGE digunakan untuk mengira purata nombor dalam lajur atau sekumpulan sel, contohnya: =AVERAGE(A1:A10). 3. Fungsi COUNT, digunakan untuk mengira bilangan nombor atau teks dalam lajur atau sekumpulan sel, contohnya: =COUNT(A1:A10) 4. Fungsi IF, digunakan untuk membuat pertimbangan logik berdasarkan syarat yang ditentukan dan mengembalikan hasil yang sepadan.

Kelebihan parameter lalai dalam fungsi C++ termasuk memudahkan panggilan, meningkatkan kebolehbacaan dan mengelakkan ralat. Kelemahannya ialah fleksibiliti terhad dan sekatan penamaan. Kelebihan parameter variadic termasuk fleksibiliti tanpa had dan pengikatan dinamik. Kelemahan termasuk kerumitan yang lebih besar, penukaran jenis tersirat dan kesukaran dalam penyahpepijatan.

Begini cara untuk menukar tatasusunan hasil pertanyaan MySQL kepada objek: Cipta tatasusunan objek kosong. Gelung melalui tatasusunan yang terhasil dan buat objek baharu untuk setiap baris. Gunakan gelung foreach untuk menetapkan pasangan nilai kunci setiap baris kepada sifat yang sepadan bagi objek baharu. Menambah objek baharu pada tatasusunan objek. Tutup sambungan pangkalan data.

Dalam PHP, tatasusunan ialah urutan tersusun, dan elemen diakses mengikut indeks; Akses tatasusunan adalah melalui indeks, akses objek adalah melalui sifat/kaedah. Nilai tatasusunan diluluskan dan rujukan objek diluluskan.

Perbezaan antara fungsi PHP tersuai dan fungsi yang dipratentukan ialah: Skop: Fungsi tersuai terhad kepada skop definisinya, manakala fungsi yang dipratentukan boleh diakses di seluruh skrip. Cara mentakrifkan: Fungsi tersuai ditakrifkan menggunakan kata kunci fungsi, manakala fungsi yang dipratakrifkan ditakrifkan oleh kernel PHP. Lulus parameter: Fungsi tersuai menerima parameter, manakala fungsi yang dipratentukan mungkin tidak memerlukan parameter. Kebolehlanjutan: Fungsi tersuai boleh dibuat mengikut keperluan, manakala fungsi yang dipratentukan terbina dalam dan tidak boleh diubah suai.
