我想這樣做將被執行到一個數組partial_left功能,一些liek是:的JavaScript:部分功能,爲什麼是必要的Array.prototype.slice.call做(參數)
array_1.map(partial_left1(equal));
function equal(x){return x;}
,但是當我將參數的變量推送到另一個數組(而不是Array.prototype.slice.call(參數))時,我崩潰了。因爲我想要做的其他方式,但我驚訝的是,結果是型動物:
var array_1=[1,2,3];
用我的方法:日結果是:[1,1,1] //只到數組做參考[0]
與陣列,prototype.slice.call:[1,2,3] //如何將我想是
這是我的代碼,其中,I推在另一個陣列的參數的值:
function concat(arg1,arg2,n){
for (var i = n; i < arg2.length; i++)
arg1.push(arg2[i]);
return arg1;
}
function partial_left1(f){
var argum_apply=[];
argum_apply=concat(argum_apply,arguments,1);
return function(){
argum_apply=concat(argum_apply,arguments,0);
return f.apply(this,argum_apply);
};
}
這就是Array.proto的代碼type.slice.call:
function array(a, n) { return Array.prototype.slice.call(a, n || 0); }
function partial_left2(f /*, ...*/) {
var args = arguments;
return function() {
var a = array(args, 1);
a = a.concat(array(arguments));
return f.apply(this, a);
};
}
的平等與局部的簡單定義:
var equal_left1=partial_left1(equal);
var equal_left2=partial_left2(equal);
下面是結果,我不知道爲什麼他們是型動物?
var array_1=[1,2,3];
alert(array_1.map(equal_left1));//1,1,1
alert(array_1.map(equal_left2));//1,2,3
某人的誰知道請給我解釋一下什麼是「的毗連」,並使用「Array.prototype.slice.call」之間的區別是什麼?