Rumah hujung hadapan web tutorial js Nota Kajian Javascript - Fungsi (4): arguments object_basic knowledge

Nota Kajian Javascript - Fungsi (4): arguments object_basic knowledge

May 16, 2016 pm 04:30 PM
javascript objek

Setiap fungsi Javascript boleh mengakses pembolehubah khas dalam skopnya sendiri - argumen. Pembolehubah ini mengandungi senarai semua argumen yang dihantar ke fungsi.
Objek argumen bukan tatasusunan. Walaupun secara sintaksis ia mempunyai ciri yang sama seperti tatasusunan, contohnya ia mempunyai sifat panjang. Tetapi ia tidak mewarisi daripada Array.prototype, sebenarnya, ia adalah objek.
Oleh itu, kita tidak boleh terus menggunakan beberapa kaedah tatasusunan seperti push, pop atau slice pada argumen. Jadi untuk menggunakan kaedah ini, kita perlu menukarnya kepada tatasusunan sebenar.

Tukar kepada tatasusunan

Kod berikut akan mengembalikan tatasusunan yang mengandungi semua elemen objek argumen.

Array.prototype.slice.call(arguments);
Oleh kerana penukaran adalah sangat perlahan, ini tidak disyorkan dalam program kritikal prestasi.

Pas parameter

Berikut ialah cara yang disyorkan untuk menghantar objek argumen dari satu fungsi ke fungsi yang lain.

Salin kod Kod adalah seperti berikut:

fungsi foo() {
bar.apply(null, arguments);
}
bar fungsi(a, b, c) {
// buat perkara di sini
}

Kaedah pintar lain ialah menggunakan panggilan dan memohon pada masa yang sama untuk mencipta kaedah luar yang tidak terikat dengan cepat.

Salin kod Kod adalah seperti berikut:

fungsi Foo() {}
Foo.prototype.method = fungsi(a, b, c) {
console.log(ini, a, b, c);
};
// Cipta versi "kaedah" yang tidak terikat
// Ia mengambil parameter: ini, arg1, arg2...argN
Foo.method = function() {
// Keputusan: Foo.prototype.method.call(this, arg1, arg2... argN)
Function.call.apply(Foo.prototype.method, arguments);
};

Hubungan antara parameter fungsi dan atribut argumen

Objek

argumen mencipta kaedah pengambil dan penetap untuk kedua-dua sifatnya sendiri dan parameter formal fungsinya.
Oleh itu, mengubah suai parameter formal fungsi akan mempengaruhi nilai sifat objek argumen yang sepadan, dan sebaliknya.

Salin kod Kod adalah seperti berikut:

fungsi foo(a, b, c) {
hujah[0] = 2;
a; // 2
b = 4;
hujah[1]; // 4
var d = c;
d = 9;
c; // 3
}
foo(1, 2, 3);

Isu prestasi

argumen tidak akan dibuat dalam dua situasi sahaja, satu diisytiharkan sebagai pembolehubah tempatan di dalam fungsi, dan satu lagi digunakan sebagai parameter formal fungsi. Jika tidak, objek argumen sentiasa dicipta.
Memandangkan kaedah getter dan setter sentiasa dicipta dengan objek argumen, menggunakan argumen itu sendiri mempunyai sedikit kesan ke atas prestasi.
Walau bagaimanapun, terdapat satu situasi yang menjejaskan prestasi Javascript secara serius, iaitu penggunaan arguments.callee.

Salin kod Kod adalah seperti berikut:

fungsi foo() {
arguments.callee; // lakukan sesuatu dengan objek fungsi ini
arguments.callee.caller; // dan objek fungsi memanggil
}
fungsi bigLoop() {
untuk(var i = 0; i < 100000; i ) {
foo(); // Lazimnya akan sebaris...
}
}

Dalam kod di atas, fungsi foo bukan lagi sambungan sebaris yang mudah, kerana ia perlu mengetahui dirinya sendiri dan pemanggilnya. Ini bukan sahaja menafikan keuntungan prestasi yang dibawa oleh pengembangan sebaris, tetapi juga memusnahkan enkapsulasi fungsi, kerana fungsi itu sendiri mungkin perlu bergantung pada konteks panggilan tertentu.
Oleh itu, adalah disyorkan agar anda cuba untuk tidak menggunakan arguments.callee.

Yang di atas adalah mengenai objek hujah Javascript Adakah anda memahaminya dengan teliti

argumen merujuk kepada objek parameter fungsi (merujuk kepada parameter sebenar yang diluluskan)
arguments.length merujuk kepada panjang objek parameter fungsi
argumen[i] merujuk kepada nilai parameter ke-i (yang pertama ialah 0)

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

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

WebSocket dan JavaScript: teknologi utama untuk melaksanakan sistem pemantauan masa nyata WebSocket dan JavaScript: teknologi utama untuk melaksanakan sistem pemantauan masa nyata Dec 17, 2023 pm 05:30 PM

WebSocket dan JavaScript: Teknologi utama untuk merealisasikan sistem pemantauan masa nyata Pengenalan: Dengan perkembangan pesat teknologi Internet, sistem pemantauan masa nyata telah digunakan secara meluas dalam pelbagai bidang. Salah satu teknologi utama untuk mencapai pemantauan masa nyata ialah gabungan WebSocket dan JavaScript. Artikel ini akan memperkenalkan aplikasi WebSocket dan JavaScript dalam sistem pemantauan masa nyata, memberikan contoh kod dan menerangkan prinsip pelaksanaannya secara terperinci. 1. Teknologi WebSocket

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 objek Permintaan dalam PHP? Apakah objek Permintaan dalam PHP? Feb 27, 2024 pm 09:06 PM

Objek Permintaan dalam PHP ialah objek yang digunakan untuk mengendalikan permintaan HTTP yang dihantar oleh klien ke pelayan. Melalui objek Permintaan, kami boleh mendapatkan maklumat permintaan pelanggan, seperti kaedah permintaan, maklumat pengepala permintaan, parameter permintaan, dsb., untuk memproses dan membalas permintaan tersebut. Dalam PHP, anda boleh menggunakan pembolehubah global seperti $_REQUEST, $_GET, $_POST, dll. untuk mendapatkan maklumat yang diminta, tetapi pembolehubah ini bukan objek, tetapi tatasusunan. Untuk memproses maklumat permintaan dengan lebih fleksibel dan mudah, anda boleh

JavaScript dan WebSocket: Membina sistem ramalan cuaca masa nyata yang cekap JavaScript dan WebSocket: Membina sistem ramalan cuaca masa nyata yang cekap Dec 17, 2023 pm 05:13 PM

JavaScript dan WebSocket: Membina sistem ramalan cuaca masa nyata yang cekap Pengenalan: Hari ini, ketepatan ramalan cuaca sangat penting kepada kehidupan harian dan membuat keputusan. Apabila teknologi berkembang, kami boleh menyediakan ramalan cuaca yang lebih tepat dan boleh dipercayai dengan mendapatkan data cuaca dalam masa nyata. Dalam artikel ini, kita akan mempelajari cara menggunakan teknologi JavaScript dan WebSocket untuk membina sistem ramalan cuaca masa nyata yang cekap. Artikel ini akan menunjukkan proses pelaksanaan melalui contoh kod tertentu. Kami

Tutorial JavaScript Mudah: Cara Mendapatkan Kod Status HTTP Tutorial JavaScript Mudah: Cara Mendapatkan Kod Status HTTP Jan 05, 2024 pm 06:08 PM

Tutorial JavaScript: Bagaimana untuk mendapatkan kod status HTTP, contoh kod khusus diperlukan: Dalam pembangunan web, interaksi data dengan pelayan sering terlibat. Apabila berkomunikasi dengan pelayan, kami selalunya perlu mendapatkan kod status HTTP yang dikembalikan untuk menentukan sama ada operasi itu berjaya dan melaksanakan pemprosesan yang sepadan berdasarkan kod status yang berbeza. Artikel ini akan mengajar anda cara menggunakan JavaScript untuk mendapatkan kod status HTTP dan menyediakan beberapa contoh kod praktikal. Menggunakan XMLHttpRequest

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.

Bagaimana untuk mendapatkan kod status HTTP dalam JavaScript dengan cara yang mudah Bagaimana untuk mendapatkan kod status HTTP dalam JavaScript dengan cara yang mudah Jan 05, 2024 pm 01:37 PM

Pengenalan kepada kaedah mendapatkan kod status HTTP dalam JavaScript: Dalam pembangunan bahagian hadapan, kita selalunya perlu berurusan dengan interaksi dengan antara muka bahagian belakang, dan kod status HTTP adalah bahagian yang sangat penting daripadanya. Memahami dan mendapatkan kod status HTTP membantu kami mengendalikan data yang dikembalikan oleh antara muka dengan lebih baik. Artikel ini akan memperkenalkan cara menggunakan JavaScript untuk mendapatkan kod status HTTP dan memberikan contoh kod khusus. 1. Apakah kod status HTTP bermakna kod status HTTP apabila penyemak imbas memulakan permintaan kepada pelayan, perkhidmatan tersebut

Apakah yang perlu saya perhatikan apabila fungsi C++ mengembalikan objek? Apakah yang perlu saya perhatikan apabila fungsi C++ mengembalikan objek? Apr 19, 2024 pm 12:15 PM

Dalam C++, terdapat tiga perkara yang perlu diperhatikan apabila fungsi mengembalikan objek: Kitaran hayat objek diuruskan oleh pemanggil untuk mengelakkan kebocoran memori. Elakkan penunjuk berjuntai dan pastikan objek kekal sah selepas fungsi kembali dengan memperuntukkan memori secara dinamik atau mengembalikan objek itu sendiri. Pengkompil boleh mengoptimumkan pembuatan salinan objek yang dikembalikan untuk meningkatkan prestasi, tetapi jika objek itu diluluskan oleh semantik nilai, tiada pembuatan salinan diperlukan.

See all articles