2011-09-17 17 views
2

私はrequire関数を使うとnode.jsの2つの関数の継承に問題があります。Node.js必要なプロトタイプ継承

  • administrationsことがちょうどユーザー変数とprint_user機能を持っている:あなたがここに見ることができるように、私は2つの機能を持っている

    function administrators() { 
        this.user = 'bob'; 
    } 
    administrators.prototype.print_user = function() { 
        console.log(this.user); 
    } 
    
    /*******/ 
    
    
    function helper() {} 
    
    helper.prototype = new administrators(); 
    
    helper.prototype.change_administrator = function() { 
        this.user = 'john'; 
    
    } 
    
    var h = new helper(); 
    
    h.print_user(); 
    h.change_administrator(); 
    h.print_user(); 
    

    は、ここに私の場合です。

  • helpersadministratorsからすべてを継承し、がadministrators()に変更されたchange_administratorを追加します。ここで

質問です:

私は例えば、分離したファイルには、この機能(administratorshelper)を持つようにしたい:administrators.jshelper.jsが。

index.jsにこれらの2つのファイルを含め、requireを付けて、上記の例のように変数と関数を継承してadministratorsというヘルパーにしたいと思います。

P.S.私は似たような質問をしていましたが、そのような相続については何もありません。

答えて

6

あなたはhelpers.jsファイル内から管理者を必要とする必要がある管理者を必要としてい

「一つのオブジェクトから他のメソッドとプロパティをコピーする」という意味ここに拡張します。

administrators.js

function administrators() { 
    this.user = 'bob'; 
} 
administrators.prototype.print_user = function() { 
    console.log(this.user); 
} 

module.exports = administrators; 

helpers.js

var administrators = require('./administrators'); 

function helper() {} 

helper.prototype = new administrators(); 

helper.prototype.change_administrator = function() { 
    this.user = 'john'; 
}; 

module.exports = helper; 

index.js

var helper = require('./helpers'); 

var h = new helper(); 

h.print_user(); 
h.change_administrator(); 
h.print_user(); 
0

必要としたクラスで手動で拡張する必要があります。

が交互にヘルパーが直接

関連する問題