John Resig'in mükemmel Advanced javascript tutorial'dan geçiyorum ve aşağıdaki çağrılar arasındaki farkın ne olduğunu iyice anlayamıyorum: ('arguments' in yerleşik bir javascript sözcüğü olduğunu lütfen unutmayın tam olarak değil bir dizi dolayısıylaArray.slice ve Array(). Arasındaki fark
>>> arguments
[3, 1, 2, 3]
>>> Array.slice.call(arguments)
3,1,2,3 0=3 1=1 2=2 3=3
>>> Array.slice.call(arguments, 1)
[]
>>> Array().slice.call(arguments)
3,1,2,3 0=3 1=1 2=2 3=3
>>> Array().slice.call(arguments, 1)
1,2,3 0=1 1=2 2=3
Temelde benim yanlış anlama Array.slice ve Array(). dilim arasındaki fark aşağı kaynar) basitçe çağıran arguments.slice yerine Array.slice ile hack. Bu ikisi arasındaki fark tam olarak nedir ve neden Array.slice.call beklendiği gibi davranmıyor? (argümanlar listesinin ilk öğesinin tümünü geri veriyor).
o '08 tarayıcılarda nasıl davrandığını bilmiyorum, ancak erken 2013 itibariyle, 'String.substring.call' (' String' yapıcısı bir 'substring' özelliği olmadığı için) Chrome'da bir TypeError atar . – bfavaretto
@bfavaretto, Firefox (tek başına) Array.slice' ve 'String.substring' komutunu uygular. Asker şüphesiz bunu denerken Firefox kullanıyordu. –
Bilgi için teşekkürler @NathanWall. Firefox’un oldukça tuhafı, muhtemelen String.prototype.substring' ve ark’a kısayol olarak ekledikleri bir şey. geriye dönük uyumluluk için ... ve görünüşe göre bir süredir etrafta dolaşıyor. – bfavaretto