2016-06-23 9 views
3

私は本当に誰かからの説明を使用することができました。Function.prototype.call.bindがこのコードでどのように機能するか

このコードについて真剣に混乱しています。特にライン2

コードソースはcallが実行する機能コンテキスト(thisオペレータ)としてhttps://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/slice

var unboundSlice = Array.prototype.slice; 
var slice = Function.prototype.call.bind(unboundSlice); 

function list() { 
    return slice(arguments); 
} 

var list1 = list(1, 2, 3); // [1, 2, 3] 
+0

それハードワイヤ(いわば)に配列インスタンスの方法を回すArray.prototype.slice.call' 'の' .call'部、関数の代わりに配列を引数として取ります。 –

+0

人は非常に迅速に重複を呼び出すことができます。これは、MDNサイトの非常に具体的なコード例の具体的な質問です。良い質問です。答えは問題のコードに関連しています。 – Ryan

答えて

5

var slice = Function.prototype.call.bind(unboundSlice);

パスunboundSliceあります。 だからときに実行: list(1,2,3) < =>

slice([1,2,3]) < =>

コンテキストunboundSliceおよびパラメータargumentsとexcecute callunboundSlice.call(arguments) < =>

コンテキストarguments (array [1,2,3])unboundSlice機能を実行する:[1,2,3].unboundSlice() < =>

実行:[1,2,3].slice() < =>

[1, 2, 3]

+0

ありがとうございます。 – Collizo4sky

関連する問題