第一版functionSpecialArray(){varvalues=newArray();//沒有運(yùn)用apply方法values.push(arguments);values.toPipedString=function(){returnthis.join('|');};returnvalues;}varcolors=newSpecialArray('red','blue','green');console.log(colors);//[Arguments(3),toPipedString:function]console.log(colors.toPipedString());//[objectArguments]第二版functionSpecialArray(){varvalues=newArray();//運(yùn)用apply方法,指向thisvalues.push.apply(this,arguments);values.toPipedString=function(){returnthis.join('|');};returnvalues;}varcolors=newSpecialArray('red','blue','green');console.log(colors);//[toPipedString:function]console.log(colors.toPipedString());//空第三版functionSpecialArray(){varvalues=newArray();//運(yùn)用apply方法,指向valuesvalues.push.apply(values,arguments);values.toPipedString=function(){returnthis.join('|');};returnvalues;}varcolors=newSpecialArray('red','blue','green');console.log(colors);//["red","blue","green",toPipedString:function]console.log(colors.toPipedString());//red|blue|green第三版是《JavaScript高級程序設(shè)計(jì)》中的例子,前兩版是我發(fā)散的。為什么三個(gè)版本出來的結(jié)果相差這么大?對call和apply理解的還是不夠深,望指點(diǎn)。
關(guān)于apply方法的疑問
紅糖糍粑
2019-05-25 16:49:22