2011-09-17 40 views
2

當我使用require函數時,在node.js中有兩個函數的繼承存在問題。Node.js原型繼承與要求

這裏是我的情況:

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(); 

正如你可以在這裏看到我有兩個功能:

  • administrations只是有用戶變量和print_user功能。
  • helpers繼承了administrators的所有內容,然後我們添加change_administrator,其中更改this.useadministrators()中聲明。

這裏有一個問題:

我想有這樣的功能分隔的文件(administratorshelper),例如:administrators.jshelper.js

然後我想在index.jsrequire中包含這兩個文件,並繼承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

您將不得不在需要的類中手動擴展它們。

擴展這裏的意思是「方法和屬性,複製從一個對象到另一個」

交替有傭工需要管理員直接