2016-07-22 21 views
0

私は、私のjsクラスの性質上、共通の引数スプリッタを持っています。私はapply、またはcallにこのfunctinを渡し、argumentsオブジェクトを実際に関数の引数として渡さずに渡す方法を理解できません。引数を渡す

私は

splitArgs.call(this, arguments);

splitArgs.call(this, ...arguments);

splitArgs.apply(this, arguments);

splitArgs.apply(this, ...arguments);

splitArgs(...arguments);を試してみました

function splitArgs(){ 
    return { 
     text : arguments[0], 
     class : arguments[1] || "" 
    } 
} 

function doSomething(){ 
    var args = splitArgs.call(this, arguments); 
    if(args.class) 
     // do stuff 
} 

答えて

0

私はあなたがsplitArgs.apply(this, arguments)をしようとしたと言う知っている...しかし、私のために働くようだ:

function splitArgs() { 
 
    return { 
 
     text: arguments[0], 
 
     class: arguments[1] || "" 
 
    }; 
 
} 
 

 
function doSomething() { 
 
    var args = splitArgs.apply(this, arguments); 
 
    console.log(args); 
 
} 
 

 
doSomething('foo', 'bar'); 
 

 
// Output: 
 
// { text: 'foo', class: 'bar' }

出力:ES6で

{ text: 'foo', class: 'bar' } 

、これも作品を私にとって:

var args = splitArgs(...arguments); 
+0

あなたのフィドルは私のためにうまくいきます。 (私は ''新しいFoo()。do( "foo"、 "bar") 'を実行し、両方とも働いていました)** EDIT **:これは、削除されたコメントに対する応答でした。 – smarx

+0

thx。すべての議論を最初の議論に入れていた議論の問題がさらに高まった! – Tester232323