2017-10-16 11 views
1

私の発電機のメソッドはmodule.exportsですが、argumentsの配列は呼び出された関数ではありませんmoduleです。モジュールの引数は関数の引数よりも優先されます

const Promise = require('bluebird'); 

const inc = Promise.coroutine(function* (model, condition, fields, options = {}) {}); 

module.exports = { 
    inc: (model, condition, fields, options = {}) => { 
     //reveiving all the arguments fine 
     return inc.apply(null, arguments); //but "arguments" array contains the values of "module", not the function 
    } 
}; 

arguments配列:

0 - require function 
1 - Module 
2 - file path 
3 - directory path 

答えて

1

Arrow functions do not bind an arguments object

それは次のようになります。

module.exports = { 
    inc: (...args) => inc(...args) 
}; 

それを直接エクスポートする機能のコンテキストで問題が発生しない限り、それだけで使用できます

module.exports = { 
    inc 
}; 
+0

私が働いてそれを得たが、私は問題を理解していませんでした。あなたの最初の行を説明できます**矢印関数は引数オブジェクトをバインドしません**? – Shaharyar

+0

'arguments'は矢印でそれらの引数を参照することはできません。また' arguments'は親関数のスコープ引数(あなたの場合はモジュール関数)を参照します。リンクされていた参照はそのことを説明しています。 – estus

+0

私は '引数'が親関数のスコープ*に属していることを理解していますが(リンクでも説明されています)*しかし、矢印関数は 'arguments'を持たない/理解できません。 arrow関数が親である場合はどうでしょうか?私は矢印関数の親を作成することを確認し、 'arguments'オブジェクトを受け取りました。 – Shaharyar

関連する問題