2017-10-16 130 views
1

我指的是我的生成器方法module.exports但它的argumentsmodule數組不是被調用的函數。模塊參數覆蓋函數參數

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'指父函數作用域參數(在你的情況下是模塊函數) - 與箭頭中的this相似。被鏈接的參考文獻解釋了這一點。 – estus

+0

我明白'arguments'屬於父函數範圍*(鏈接中也有解釋)*,但我不明白箭頭函數不能/不能有'arguments'。如果箭頭函數是父項,該怎麼辦?我只是檢查了製作箭頭函數parent並收到了'arguments'對象.. – Shaharyar