node.jsでまだ把握していない私はクラスがメインのjsファイルで定義されている場合は、クラスの外に存在する関数をクラス内から呼び出すことができます。node.jsの必須クラスから外部関数を呼び出す
function b(){
console.log('b');
}
class X{
a(){
b();
}
}
var c = new X();
c.a();
以上が正常に動作しますが、私はrequire
を使用して、クラス独自のファイルを作成する場合、それは関数が定義されていないと言われます。
メインファイル:
var X = require('./X.js');
function b(){
console.log('b');
}
var c = new X();
c.a();
X.js:
class X{
a(){
b();
}
}
module.exports = X;
なぜこれがある、と私はそれを回避する方法を得るのですか?それとも、クラス内から外部関数を呼び出すのが貧弱なのですか?
を印刷する必要があります'b'はクラス' X'でアクセス可能なスコープ内に定義されていないため、動作しません。モジュールには独自のスコープがあります。 –
モジュールは独自のスコープを持っているので、モジュールから何かを取得する唯一の方法は、 'module.exports'に割り当てることです。 'X.js'が別のクラス' Y'を持っていても、最後に 'module.exports = X;'が残っていれば、メインファイルは 'Y'を参照することができません - ' X .js'はそれを参照できます。 –