如何理解Array.prototype.slice.call(arguments)

Array.prototype.slice.call(arguments) 一般用於將參數arguments強制轉化爲數組。數組

slice()方法可從已有的數組中返回選定的元素。因此這句代碼能夠等價爲[].slice.call(arguments);slice()爲Array原型上的一個方法,調用者沿着原型鏈向上尋找。slice方法的內部實現原理爲
Array.prototype.slice = function(start,end){
     var result = new Array();
     start = start || 0;        // 若是不傳則取默認值
     end = end || this.length;  // 若是不傳則取默認值

     //this指向調用的對象,當用了call後,可以改變this的指向,也就是指向傳進來的對象,這是關鍵
     for(var i = start; i < end; i++){
          result.push(this[i]);
     }
     return result;
}

而call是爲了改變調用者的內部this指向,用法:this

call(this,arg1,arg2);
相關文章
相關標籤/搜索