2011-12-13 97 views
2

我有一个关于在模块中定义对象的问题。用户模块 - 节点js

可以说我有一个模块:

/*---obj----*/ 
function A (param){ 
this.parm=param; 
function func(){ 
//do somthing 
} 
} 
exports.func=func; 

/*---file.js----*/ 
obj=require('obj'); 

function fileFunc(A){ 
A.func();//with out this line it works fine 
A.param=2; 
} 
} 

由于某种原因,它不承认在对象A.它识别物体A及其不同瓦尔的功能,但是当涉及到执行功能它给出了MSG:
类型错误:对象#没有方法 'FUNC'

我试图也导出的函数在一个: exports.A.func = A.func

或 exports.func = func 都不行。

有人有线索吗?

感谢名单 马蒂

回答

1

你的内部定义的函数是当地唯一的那个函数。你想要的是

function A(param) { 
    this.param = param; 
} 

A.func = function() { 
    // do something 
}; 

但是,如果你处理的构造函数,那么你会希望把该功能在A的原型

A.prototype.func = function() { 
    // do something 
}; 
+0

奏效感谢名单配发! 但仍有一个问题。 对象A也得到一个套接字对象,换句话说可以说param是一个套接字(使用网络模块)。在我想写入套接字的函数func中。所以我写 A.prototype.func = function(){ A.write('str'); }; 它不承认这是一个套接字。它表示函数写入不明。我如何告诉编译器param是socket类型的对象? – user690936 2011-12-14 18:51:26