Rumah hujung hadapan web tutorial js Tutorial pengenalan minimalis JavaScript (2): objek dan kemahiran functions_javascript

Tutorial pengenalan minimalis JavaScript (2): objek dan kemahiran functions_javascript

May 16, 2016 pm 04:32 PM
javascript Tutorial Bermula fungsi objek

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

Semua jenis lain ialah objek (jangan tertipu dengan nilai pulangan operator jenis), contohnya:

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

Buat objek daripada literal objek:

Salin kod Kod adalah seperti berikut:
//Buat objek kosong melalui objek literal {}
var empty_object = {};

Nama atribut dan nilai atribut objek:

Salin kod Kod adalah seperti berikut:
var stooge = {
// "nama pertama" ialah nama atribut, "Jerome" ialah nilai atribut
"nama pertama": "Jerome",
// "nama akhir" ialah nama atribut, "Howard" ialah nilai atribut
"last-name": "Howard"
};

Jika nama atribut ialah pengecam yang sah, petikan boleh ditinggalkan:

Salin kod Kod adalah seperti berikut:
var penerbangan = {
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"
}
};

Mari kita lihat contoh akses harta benda:

Salin kod Kod adalah seperti berikut:
var owner = { name: "Name5566" };

owner.name; // "Nama5566"
pemilik ["nama"]; // "Nama5566"

owner.job; // undefined
owner.job = "coder"; // atau owner["job"] = "coder";

Jika nama atribut bukan pengecam yang sah, ia perlu dibalut dengan petikan. Harta yang tidak wujud mempunyai nilai yang tidak ditentukan. Objek diluluskan melalui rujukan dan bukannya nilai:

Salin kod Kod adalah seperti berikut:
var x = {};
var pemilik = x;
owner.name = "Nama5566";
x.name; // x.name === "Nama5566"

Di sini x dan pemilik merujuk kepada objek yang sama.

Sifat objek boleh dipadamkan menggunakan operator padam:

Salin kod Kod adalah seperti berikut:
padam obj.x; // Padam atribut x bagi objek obj

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:

Salin kod Kod adalah seperti berikut:

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:

Salin kod Kod adalah 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:

Salin kod Kod adalah seperti berikut:

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:

Salin kod Kod adalah seperti berikut:

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:

Salin kod Kod adalah seperti berikut:

mesej = 'Hello World';
var p = function() {
console.log(this.message);
}

p(); // Output 'Hello World'

Tingkah laku ini kadangkala mengelirukan, mari lihat contoh:

Salin kod Kod adalah seperti berikut:

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:

Salin kod Kod adalah seperti berikut:

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:

Salin kod Kod adalah seperti berikut:

// 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:

Salin kod Kod adalah seperti berikut:

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:

Salin kod Kod adalah seperti berikut:

var add = function() {
var sum = 0;
untuk (var i=0; i         jumlah = hujah[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:

Salin kod Kod adalah seperti berikut:

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:

Salin kod Kod adalah seperti berikut:

Number.prototype.integer = function() {
Kembalikan Matematik[ini < 0 ? }

(1.1).integer(); // 1

Skop

JavaScript memerlukan fungsi untuk membina skop:


Salin kod Kod adalah seperti berikut:
fungsi() {
// ...
}();

Fungsi tanpa nama dicipta dan dilaksanakan di sini. Anda boleh menyembunyikan pembolehubah yang anda tidak mahu dedahkan melalui skop:

Salin kod Kod adalah seperti berikut:
var obj = function() {
//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:

Salin kod Kod adalah seperti berikut:
//Buat objek o yang objek prototaipnya ialah {x:1, y:2}
var o = Object.create({x:1, y:2});

Kaedah Object.create ditakrifkan dalam ECMAScript 5. Jika anda menggunakan ECMAScript 3, anda boleh melaksanakan kaedah cipta sendiri:


Salin kod Kod adalah seperti berikut:
// Jika kaedah Object.create tidak ditakrifkan
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:

Salin kod Kod adalah seperti berikut:

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();
};

Kod di atas sangat mudah, tetapi ia tidak dapat melindungi ahli persendirian. Kita boleh menggunakan corak modul. Dalam corak modul, jenis objek tertentu dijana oleh fungsi dan skop fungsi digunakan untuk melindungi ahli persendirian daripada akses luaran:

Salin kod Kod adalah seperti berikut:
// fungsi mamalia, digunakan untuk membina objek mamalia
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:

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Petua untuk mencipta fungsi baharu secara dinamik dalam fungsi golang Petua untuk mencipta fungsi baharu secara dinamik dalam fungsi golang Apr 25, 2024 pm 02:39 PM

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.

Pertimbangan untuk susunan parameter dalam penamaan fungsi C++ Pertimbangan untuk susunan parameter dalam penamaan fungsi C++ Apr 24, 2024 pm 04:21 PM

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.

Bagaimana untuk menulis fungsi yang cekap dan boleh diselenggara di Jawa? Bagaimana untuk menulis fungsi yang cekap dan boleh diselenggara di Jawa? Apr 24, 2024 am 11:33 AM

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.

Koleksi lengkap formula fungsi excel Koleksi lengkap formula fungsi excel May 07, 2024 pm 12:04 PM

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.

Perbandingan kelebihan dan kekurangan parameter lalai fungsi C++ dan parameter pembolehubah Perbandingan kelebihan dan kekurangan parameter lalai fungsi C++ dan parameter pembolehubah Apr 21, 2024 am 10:21 AM

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.

Bagaimana untuk menukar tatasusunan hasil pertanyaan MySQL kepada objek? Bagaimana untuk menukar tatasusunan hasil pertanyaan MySQL kepada objek? Apr 29, 2024 pm 01:09 PM

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.

Apakah perbezaan antara tatasusunan dan objek dalam PHP? Apakah perbezaan antara tatasusunan dan objek dalam PHP? Apr 29, 2024 pm 02:39 PM

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.

Apakah perbezaan antara fungsi PHP tersuai dan fungsi yang telah ditetapkan? Apakah perbezaan antara fungsi PHP tersuai dan fungsi yang telah ditetapkan? Apr 22, 2024 pm 02:21 PM

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.

See all articles