Rumah hujung hadapan web tutorial js javascript函数重载解决方案分享_基础知识

javascript函数重载解决方案分享_基础知识

May 16, 2016 pm 04:59 PM
kelebihan beban fungsi

JS的函数定义可以指定形式参数名称,多多少少我们会以为js至少可以支持参数个数不同的方法重载,然而遗憾的是这仅仅是一个假象,js所有的参数都是以arguments传递过去的,这个参数类似于数组,在函数调用的时候,所有的实参都是保存在了这个数据结构里面,我们定义函数的时候所指定的形式参数其实是为这个数据结构里面的数据定义一个快捷的访问方式。也就是说js所有的函数都是支持无限个参数的,加上数据类型是弱类型,那么JS的函数除了名称就真的没有方法区别了?

办法总是有的,我们可以利用JavaScript中的特殊对象arguments来模拟函数重载。用它来判断传入参数的个数或类型以区分重载。

1.根据参数个数重载

js判断传入参数数量可以用arguments.length这个属性来判断;

复制代码 代码如下:


2.根据参数类型重载

判断变量类型的3种方法:
1.用 typeof 语句判断变量类型,typeof语句返回类型对应的字符串。
2.用 instanceof 语句判断变量类型,instanceof语句返回true/false。
3.用 constructor 属性判断变量类型,这个属性返回用来构造该变量的构造函数引用。
对照表:可以看出用 typeof 不能准确的判断出具体的类型,所以我们用 constructor 来进行判断。

typeof string number object function boolean object object
constructor String Number Object Function Boolean Array User Define

复制代码 代码如下:


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

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

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)

Bagaimana untuk membezakan lebihan fungsi dan menulis semula dalam C++ Bagaimana untuk membezakan lebihan fungsi dan menulis semula dalam C++ Apr 19, 2024 pm 04:21 PM

Kelebihan beban fungsi membenarkan fungsi dengan nama yang sama tetapi tandatangan berbeza dalam kelas, manakala mengatasi fungsi berlaku dalam kelas terbitan apabila ia mengatasi fungsi dengan tandatangan yang sama dalam kelas asas, memberikan tingkah laku yang berbeza.

Lebih memuatkan dan menulis semula fungsi PHP Lebih memuatkan dan menulis semula fungsi PHP Apr 26, 2024 pm 05:12 PM

Kelebihan beban dan penulisan semula fungsi disokong dalam PHP untuk mencipta kod yang fleksibel dan boleh digunakan semula. Kelebihan beban fungsi: membenarkan penciptaan fungsi dengan nama yang sama tetapi parameter berbeza, dan memanggil fungsi yang paling sesuai berdasarkan padanan parameter. Penulisan semula fungsi: Benarkan subkelas mentakrifkan fungsi dengan nama yang sama dan mengatasi kaedah kelas induk Apabila kaedah subkelas dipanggil, ia akan mengatasi kaedah kelas induk.

Bagaimana untuk melaksanakan lebihan fungsi dalam golang? Bagaimana untuk melaksanakan lebihan fungsi dalam golang? Apr 29, 2024 pm 05:21 PM

Bahasa Go tidak menyokong lebihan fungsi tradisional, tetapi kesan serupa boleh dicapai melalui kaedah berikut: menggunakan fungsi bernama: mencipta nama unik untuk fungsi dengan parameter yang berbeza atau jenis pulangan menggunakan generik (Go1.18 dan ke atas): mencipta nama unik untuk pelbagai jenis parameter Satu versi fungsi.

Amalan terbaik untuk kelebihan beban fungsi C++ Amalan terbaik untuk kelebihan beban fungsi C++ Apr 20, 2024 am 10:48 AM

Amalan terbaik untuk lebihan fungsi C++: 1. Gunakan nama yang jelas dan bermakna 2. Elakkan terlalu banyak beban 3. Pertimbangkan parameter lalai 5. Gunakan SFINAE.

Adakah lebihan fungsi C++ dikenakan kepada pembina dan pemusnah? Adakah lebihan fungsi C++ dikenakan kepada pembina dan pemusnah? Apr 14, 2024 am 09:03 AM

Pembina C++ menyokong beban berlebihan, tetapi pemusnah tidak. Pembina boleh mempunyai senarai parameter yang berbeza, manakala pemusnah hanya boleh mempunyai senarai parameter kosong kerana ia dipanggil secara automatik apabila memusnahkan contoh kelas tanpa parameter input.

Apakah senario aplikasi kelebihan beban fungsi C++ dalam projek sebenar? Apakah senario aplikasi kelebihan beban fungsi C++ dalam projek sebenar? Apr 26, 2024 pm 01:57 PM

Lebihan beban fungsi membolehkan fungsi dengan nama yang sama ditakrifkan secara berbeza dalam C++, mengendalikan jenis argumen yang berbeza atau melaksanakan operasi yang berbeza. Senario aplikasi khusus termasuk: memproses jenis data yang berbeza untuk menyediakan fungsi yang berbeza untuk meningkatkan kebolehbacaan kod

Apakah batasan dan pertimbangan untuk kelebihan beban fungsi C++? Apakah batasan dan pertimbangan untuk kelebihan beban fungsi C++? Apr 13, 2024 pm 01:09 PM

Sekatan ke atas lebihan fungsi termasuk: jenis dan pesanan parameter mestilah berbeza (apabila bilangan parameter adalah sama), dan parameter lalai tidak boleh digunakan untuk membezakan lebihan muatan. Selain itu, fungsi templat dan fungsi bukan templat tidak boleh dibebankan dan fungsi templat dengan spesifikasi templat yang berbeza boleh dibebankan. Perlu diingat bahawa penggunaan lebihan fungsi secara berlebihan boleh menjejaskan kebolehbacaan dan penyahpepijatan, dengan pengkompil mencari daripada fungsi yang paling khusus kepada yang paling kurang khusus untuk menyelesaikan konflik.

Mengapa tiada fungsi lebihan beban dalam golang? Mengapa tiada fungsi lebihan beban dalam golang? Apr 30, 2024 am 10:54 AM

Lebihan muatan fungsi tidak dibenarkan dalam bahasa Go atas sebab-sebab berikut: Permudahkan pelaksanaan pengkompil Tingkatkan kebolehbacaan kod dan elakkan konflik nama Dalam Go, anda boleh menggunakan senarai atau antara muka parameter berubah-ubah untuk mencapai tingkah laku yang serupa dengan lebihan fungsi.

See all articles