4

連結を置き換えるために使用される配列のpushメソッドを見てきましたが、それがどのように機能するかは完全にはわかりません。

var a = [1,2,3];
var b = [4,5,6];
Array.prototype.push.apply(a,b);

これは、新しい配列を返すのではなく、どのように適切に連結しますか?

4

2 に答える 2

15

.apply()2つの引数を取ります:

fun.apply(thisArg[, argsArray])

オブジェクトおよび引数リストとして渡さaれているため、コードは実際にはの要素を引数として呼び出しています。thisb.push()b

var a = [1, 2, 3];
a.push(4, 5, 6);

ここで、.push()元の配列を変更するだけです。

于 2012-12-26T22:38:28.663 に答える
4

を使用しthisます。説明するには、このcustomPush関数を参照してください。

function customPush() {
    var i = 0,
        len = arguments.length;

    for(; i < len; i++) {
        this[this.length] = arguments[i];
    }
};


var a = [1,2,3];
var b = [4,5,6];
customPush.apply(a,b);
于 2012-12-26T22:40:19.060 に答える