2016-11-17 4 views
3

javascript ES-2015モジュールでは、モジュールメンバーは他のモジュールメンバーの存在を認識できますか?例えばES-2015モジュールは自己認識できますか?

は、CommonJSモジュールでは、これが可能です:同等のES-2015モジュールでは

function square(x) { 
    return x * x; 
} 
function whoAmI() { 
    return Object.keys(module.exports); // ['square','whoAmI'] 
} 
module.exports = { 
    square: square, 
    whoAmI: whoAmI 
}; 

、どのように我々はwhoAmI()関数を書くのですか?

export function square(x) { 
    return x * x; 
} 
export function whoAmI() { 
    // ????? 
} 

答えて

5

あなた自身から*をインポートし、その結果のObject.keysをエクスポートすることもできます

// myModule.js 
import * as exports from './myModule'; 

export function square(x) { return x * x; } 
export let whoAmI = Object.keys(exports); 

// consumer.js 
import {whoAmI} from `./myModule'; 
console.log(whoAmI); 

> ['square'] 

これは、それを含めるので、whoAmIは含まれません。

export let whoAmI = Object.keys(exports).concat('whoAmI'); 
+0

忘れてはいけません「whoAmI」もまた復帰する必要があります。出力は '['square'、 'whoAmI']' – 4castle

+0

です。ところで、この循環自己依存性は完全に合法です。 [関連する質問](http://stackoverflow.com/q/40240659/5743988) – 4castle

+0

@ torzaaburoなぜ、 'whoAmI'がエクスポートキーに含まれないのでしょうか? (私は@ 4castleに同意し、それを信じています) – Constablebrew

関連する問題