因為object沒有某個方法,但是別的對象有,可以藉助apply或call像別的對象借方法來操作。 貓吃魚,狗吃肉,奧特曼打小怪獸。 有天狗想吃魚了 貓.吃魚.call(狗,魚) 狗就吃到魚了 貓成精了,想打怪獸 奧特曼.打小怪獸.call(貓,小怪獸) call需要把參數按順序傳遞進去,而appl ...
因為object沒有某個方法,但是別的對象有,可以藉助apply或call像別的對象借方法來操作。
貓吃魚,狗吃肉,奧特曼打小怪獸。
有天狗想吃魚了
貓.吃魚.call(狗,魚)
狗就吃到魚了
貓成精了,想打怪獸
奧特曼.打小怪獸.call(貓,小怪獸)
call需要把參數按順序傳遞進去,而apply則是把參數放在數組裡。
- 明確知道參數數量時,用call;
- 而不確定的時候,用apply把參數放在數組裡傳遞進去。
call和apply其實是同一種東西,區別隻是參數不同。call其實是apply的語法糖。
方法一:
function concat(arr1, arr2) {
return arr1.concat(arr2);
}
方法二:用apply
function concat(arr1,arr2){
var newArr = arr1.slice(0);
[].push.apply(newArr,arr2);
return newArr;
}