日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Array.prototype.slice.call(arguments)

發布時間:2023/12/13 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Array.prototype.slice.call(arguments) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Array.prototype.slice.call(arguments)能將具有length屬性的對象轉成數組,除了IE下的節點集合(因為ie下的dom對象是以com對象的形式實現的,js對象與com對象不能進行轉換) 如: 1 var a={length:2,0:'first',1:'second'}; 2 Array.prototype.slice.call(a);// ["first", "second"] 3 4 var a={length:2}; 5 Array.prototype.slice.call(a);// [undefined, undefined]

首先,slice有兩個用法,一個是String.slice,一個是Array.slice,第一個返回的是字符串,第二個返回的是數組,這里我們看第2個。

Array.prototype.slice.call(arguments)能夠將arguments轉成數組,那么就是arguments.toArray().slice();到這里,是不是就可以說Array.prototype.slice.call(arguments)的過程就是先將傳入進來的第一個參數轉為數組,再調用slice? ? 再看call的用法,如下例子 1 var a = function(){ 2 console.log(this); // 'littledu' 3 console.log(typeof this); // Object 4 console.log(this instanceof String); // true 5 } 6 a.call('littledu'); 可以看出,call了后,就把當前函數推入所傳參數的作用域中去了,不知道這樣說對不對,但反正this就指向了所傳進去的對象就肯定的了。 到這里,基本就差不多了,我們可以大膽猜一下slice的內部實現,如下 1 Array.prototype.slice = function(start,end){ 2 var result = new Array(); 3 start = start || 0; 4 end = end || this.length; //this指向調用的對象,當用了call后,能夠改變this的指向,也就是指向傳進來的對象,這是關鍵 5 for(var i = start; i < end; i++){ 6 result.push(this[i]); 7 } 8 return result; 9 }

大概就是這樣吧,理解就行,不深究。

總結

以上是生活随笔為你收集整理的Array.prototype.slice.call(arguments)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。