2015-02-12 129 views
0

我有一個類文件,它根據實例化過程中傳入的參數創建套接字連接。node.js多次實例化類

當我嘗試多次實例化此文件(for循環)時,它看起來像node.js像單例一樣處理它。

有沒有一種方法可以從同一個js文件創建新的實例,該文件可以傳遞自己的參數?

app.js

for(var i....){ 
    require('./controller/sockets')(param[i]); 
} 

./controller/sockets

var util = require('util'); 
var param 

Socket = function(iParam) { 
    param = iParam; 
}; 

util.inherits(Socket,EventEmitter); 

Socket.prototype.test = function(){ 
    return param; 
}; 

module.exports = Socket; 

謝謝!

+0

請出示相關的代碼。這不是一個通用的問題 - 它是特定於你的代碼。如果你想要做的是在一個循環中多次使用'require()',那不是需求的工作方式。模塊被緩存。您可以讓該模塊導出構造函數,然後多次調用該構造函數。 – jfriend00 2015-02-12 04:12:03

+0

添加代碼....請讓我知道什麼是不正確的... – user3658423 2015-02-12 04:19:02

回答

1

你的構造函數實際上並沒有創建任何東西。它所做的只是將參數存儲在一個變量中。所以,當你調用它N次時,它所做的只是將連續N次的不同值存儲到同一個變量中。

您的代碼基本上是這樣做的:

var param; 
var Socket = function(iParam) { 
    param = iParam; 
} 

for(var i....){ 
    Socket(param[i]); 
} 

你想要它做的,但也許是構造需要創建(可能使用new)的對象是我也不清楚,初始化它,然後把它返還。


如果你想有一個新的Socket對象從每次調用構造函數後面,那麼你可以做這樣的:

var util = require('util'); 

function Socket(iParam) { 
    this.param = iParam; 
} 

util.inherits(Socket,EventEmitter); 

Socket.prototype.test = function(){ 
    return this.param; 
}; 

module.exports = function(x) { 
    return new Socket(x); 
}; 
+0

我想創建襪子[i] = require('./controllers/sockets')(param [i]);當我調用sock [i] .test時,我想獲取在該實例中設置的原始參數。 – user3658423 2015-02-12 04:28:09

+0

@ user3658423 - 你想在'var [i]'中做什麼? – jfriend00 2015-02-12 04:28:52

+0

我想創建sock [i] = require('./controllers/sockets')(param [i]);當我調用sock [i] .test時,我想獲取在該實例中設置的原始參數。 – user3658423 2015-02-12 04:34:11