2017-01-18 20 views
3

拡張する各サブクラスの位置を返す親クラスにメソッドを作成したいとします。javascriptスーパークラスからサブクラス '__dirname'を取得する方法

// Class A dir is '/classes/a/ 
 
class A{  
 
    getPath(){ 
 
     console.log(__dirname); 
 
     return (__dirname); 
 
    } 
 
} 
 

 
// Class B dir is '/classes/b' 
 
class B extends A{ 
 

 
} 
 

 
new A().getPath(); // Prints '/classes/a' 
 
new B().getPath(); // Prints '/classes/a' (I want here '/classes/b');

クラスBはAの位置を出力しますが、私は、サブクラスの場所を表示します親クラスのメソッドを作成するためのオプションを探していますなぜ私は理解しています。私はポイントを欠いているので、すべてのサブクラスでメソッドをオーバーライドする必要はありません

私もprocess.pwd()を試しました。

+0

関連:http://stackoverflow.com/questions/13227489/how-can-one-get-the-file-path-of-the-caller-function-in-node-js –

+0

「新しいB ).getPath() 'は、Bのメソッドを上書きしないと、実際に' A.prototype.getPath.call(new B()) 'を実行します(オブジェクトBのプロトタイプチェーンに' B.prototype.getPath'を作成します) )、明らかに '__dirname'はAのdirnameのままです。 – Xlee

+0

__dirnameの代わりに他のオプションはありませんか?それはBのdirを返すでしょうか? –

答えて

0

このメソッドをオーバーライドするだけで操作できます。これ以上継承したくない場合は、継承定義に基づいているため、継承を使用しないでください。

関連する問題