2016-06-29 1 views
-1

[] .splice.applyまたは[] .splice.pushなど

今、私はそれが0番目indiceで2項を削除しますので、意思出力hello,papa,gregに、

var tuna = ['bob', 'john' , 'papa' , 'greg']; 
var newArr = [] 
tuna.splice(0,2,"hello"); 
console.log(tuna); 

例えばスプライス分かりだと思います。

私はまた、我々はこれらの2つの方法を組み合わせて、または適用を押すと

var person = { 
    firstname: 'John', 
    lastname: 'Doe', 
    getFullName: function() { 

     var fullname = this.firstname + ' ' + this.lastname; 
     return fullname; 

    } 
} 

var logName = function(lang1, lang2) { 

    console.log('Logged: ' + this.getFullName()); 
    console.log('Arguments: ' + lang1 + ' ' + lang2); 
    console.log('-----------'); 

} 
var logPersonName = logName.bind(person); 
logPersonName('en'); 
logName.call(person, 'en', 'es'); 
logName.apply(person, ['en', 'es']); 

だから何が起こるか、以下の文脈で作品を適用する方法を知っていますか?簡単な例が本当に役に立ちます。あなたはおそらく見てきた何

+2

'[] .splice.push'は意味がありません。 '[] .splice.apply'は、" apply "がFunctionプロトタイプの関数の名前だからです。今、 '[] .push.apply'も同様の理由から意味があります。 – Pointy

+0

はい、何らかの理由で申し訳なく思っていませんでした。訂正ありがとう –

答えて

1

は次のようになります。これはsliceの標準的な実装、つまり、Arrayslice方法をとり、配列のようなオブジェクト上で、それを使用し、配列を返す

var foo = Array.prototype.slice.apply(arguments) 

。これは、実際の配列にアレイ状オブジェクトをオンに簡略です。これは、この目標を達成するための最短かつ最も便利な方法であるため、純粋に使用されます。 sliceは、任意の配列のようなオブジェクト上で動作し、実際の配列を返すために発生し、それが配列で他に何もしないその追加のパラメータのいずれかを使用していないとき。だからこそこの目的のために使うのが便利です。それはそれがために設計されていなかったが、それはどこでも動作しますので、...だけでなく、ここで我々はそれを使用しているために、スライス法を乱用本当にです。

例:

var o = {}; 
o[0] = 'foo'; 
o[1] = 'bar'; 
o.length = 2; 

これは、アレイ状目的であるが、それは、任意の実際の配列方法を持ちません。 oは実際の配列ではないので、私はo.push('baz')を実行できません。実際の配列に変換するには、上記のメソッドを使用して、実際の配列のように扱うことができます。

+0

ありがとうございます.splice.applyを使用している例はありますか? –

+0

これは私が知っている典型的な使用ではありませんが、便利な状況があると確信しています。自分で作成したシナリオを思いついてください。 – deceze

+0

ところで、私が作った例とは違ってここに「適用」する方法が説明されていますか?私はその文脈でそれを使うことを学んだだけです。 –

関連する問題