Array.prototype.slice.apply的使用方法_javascript技巧
function test(){
//将参数转为一个数组
var args = Array.prototype.slice.apply(arguments);
alert(args);
}
arguments在JavaScript语法中是函数特有的一个对象属性(Arguments对象),用来引用调用该函数时传递的实际参数。这个对象很象数组,拥有length属性且使用下标的形式来获取其元素,但它又并非真正的Array对象。更多关于Arguments对象的资料请参阅《JavaScript权威指南》。
所以,直接调用arguments.slice()将返回一个"Object doesn't support this property or method"错误,因为arguments不是一个真正的数组。而以上代码调用Array.prototype.slice.apply(arguments)的意义就在于它能将函数的参数对象转化为一个真正的数组。JavaScript脚本引擎如何实现我们不得而知,但这种方式确实是有效的,而且在主流浏览器上都测试通过。另一方面也可推知Arguments对象和Array对象的亲缘关系。如果你在编写JavaScript的时候,常常碰到需要将arguments对象转成Array来处理的情形,这个技巧可以帮上忙。
这个技巧来自鼎鼎大名的DouglasCrockford。推而广之,Array其他的原型方法也可以应用在arguments上,比如:
var arg0 = Array.prototype.shift.apply(arguments);
shift也是Array的一个实例方法,用于获取并返回数组的第一个元素。当然如上的调用虽然可执行,但却纯属多余,不如直接调用arguments[0]来的简单直接。再推而广之,我们也可以对很多形似Array的Collection对象应用这个技巧,比如Array.prototype.slice.apply(document.getElementsByTagName('div')); 不过很遗憾,IE并不支持这样的调用,Firefox和Opera则都能得到正确的结果。
Prototype1.4中增加的$A()方法也常用来将arguments转为数组,我们看它的实现:
var $A = Array.from = function(iterable) {
if(!iterable) return[];
if(iterable.toArray) {
returniterable.toArray();
} else {
varresults = [];
for(vari=0; i
returnresults;
}
}
Prototype用一个for循环来构造新数组,这样是为了保证最大限度的兼容性。

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

Dalam bahasa Go, kita sering menghadapi ralat, iaitu ralat "panic:runtimeerror:sliceboundsoutofrange" (slice out of range). Ini kerana apabila kami menggunakan kepingan, kami biasanya mengakses atau mengendalikan kepingan, dan indeks akses mungkin terkeluar dari batasan. Artikel ini akan menerangkan punca asas kesilapan ini, cara mengelakkan dan menyelesaikannya. 1. Punca ralat di luar sempadan Slice ialah jenis rujukan, yang dikawal oleh asas

Tajuk: Contoh menggunakan fungsi Array.Sort untuk mengisih tatasusunan dalam Teks C#: Dalam C#, tatasusunan ialah struktur data yang biasa digunakan dan operasi pengisihan tatasusunan selalunya diperlukan. C# menyediakan kelas Array, yang mempunyai kaedah Isih untuk menyusun tatasusunan dengan mudah. Artikel ini akan menunjukkan cara menggunakan fungsi Array.Sort dalam C# untuk mengisih tatasusunan dan memberikan contoh kod khusus. Pertama, kita perlu memahami penggunaan asas fungsi Array.Sort. Susunan.Jadi

Penyediaan data: Untuk mengagregat syarat pertanyaan, beberapa keping data ditambah. MIN kita cuba dapatkan umur minimum. Pelaksanaan kaedah @OverridepublicIntegergetAgeMin(){Mapresult=testFluentMybatisMapper.findOneMap(newTestFluentMybatisQuery().select.min.age("minAge").end()).orElse(null);returnresult!=null?Convert.toInt(result.get (&qu

Apabila pengaturcaraan dalam PHP, kita selalunya perlu menggabungkan tatasusunan. PHP menyediakan fungsi array_merge() untuk melengkapkan penggabungan tatasusunan, tetapi apabila kunci yang sama wujud dalam tatasusunan, fungsi ini akan menimpa nilai asal. Untuk menyelesaikan masalah ini, PHP juga menyediakan fungsi array_merge_recursive() dalam bahasa, yang boleh menggabungkan tatasusunan dan mengekalkan nilai kunci yang sama, menjadikan reka bentuk program lebih fleksibel. array_merge

Dalam PHP, terdapat banyak fungsi tatasusunan berkuasa yang boleh menjadikan operasi tatasusunan lebih mudah dan lebih pantas. Apabila kita perlu menggabungkan dua tatasusunan ke dalam tatasusunan bersekutu, kita boleh menggunakan fungsi array_combine PHP untuk mencapai operasi ini. Fungsi ini sebenarnya digunakan untuk menggabungkan kekunci satu tatasusunan sebagai nilai tatasusunan lain ke dalam tatasusunan bersekutu baharu. Seterusnya, kami akan menerangkan cara menggunakan fungsi array_combine dalam PHP untuk menggabungkan dua tatasusunan menjadi tatasusunan bersekutu. Ketahui tentang array_comb

Dalam pengaturcaraan PHP, tatasusunan ialah struktur data yang sangat penting yang boleh mengendalikan sejumlah besar data dengan mudah. PHP menyediakan banyak fungsi berkaitan tatasusunan, array_fill() adalah salah satu daripadanya. Artikel ini akan memperkenalkan secara terperinci penggunaan fungsi array_fill(), serta beberapa petua dalam aplikasi praktikal. 1. Gambaran keseluruhan fungsi array_fill() Fungsi array_fill() adalah untuk mencipta tatasusunan nilai yang sama dengan panjang yang ditentukan. Secara khusus, sintaks fungsi ini ialah

Modul tatasusunan dalam Python ialah tatasusunan yang dipratentukan, jadi ia mengambil lebih sedikit ruang dalam ingatan daripada senarai standard, dan juga boleh melaksanakan operasi peringkat elemen pantas seperti menambah, memadam, mengindeks dan menghiris. Selain itu, semua elemen dalam tatasusunan adalah daripada jenis yang sama, jadi anda boleh menggunakan fungsi operasi berangka yang cekap yang disediakan oleh tatasusunan, seperti mengira nilai purata, maksimum dan minimum. Selain itu, modul tatasusunan juga menyokong menulis dan membaca objek tatasusunan terus ke dalam fail binari, yang menjadikannya lebih cekap apabila memproses sejumlah besar data berangka. Oleh itu, jika anda perlu memproses sejumlah besar data homogen, anda boleh mempertimbangkan untuk menggunakan modul tatasusunan Python untuk mengoptimumkan kecekapan pelaksanaan kod anda. Untuk menggunakan modul tatasusunan, anda perlu terlebih dahulu

Dalam pengaturcaraan Java, tatasusunan ialah struktur data yang penting. Tatasusunan boleh menyimpan berbilang nilai dalam satu pembolehubah, dan yang lebih penting setiap nilai boleh diakses menggunakan indeks. Tetapi semasa bekerja dengan tatasusunan, beberapa pengecualian mungkin berlaku, salah satunya ialah ArrayStoreException. Artikel ini akan membincangkan punca biasa pengecualian ArrayStoreException. 1. Jenis tidak padan Jenis elemen mesti ditentukan apabila tatasusunan dibuat. Apabila kami cuba menyimpan jenis data yang tidak serasi ke dalam tatasusunan, ia akan membuang
