2011-12-13 6 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とその異なるVARSを認識し、それが機能を実行することになると、オブジェクトAの機能を認識しない何らかの理由
はTypeError: exports.A.func = A.func

または0:オブジェクト#は何の方法 'FUNC'

iをAに関数をエクスポートすることも試みを持っていない、それはMSGを与えますexports.func = func どちらも動作しません。

誰かが手掛かりを持っていますか?

ありがとう マッティ

答えて

1

あなたがAの内部で定義された関数は、その関数にローカルです。何が欲しいのは

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

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

あるしかし、あなたはコンストラクタとしてAを処理している場合、あなたはAのプロトタイプで働いていた

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

ありがとうのアロットをその機能を置きたいと思うでしょう! しかし、まだ1つの問題があります。 オブジェクトAはまた、ソケットオブジェクトを取得し、他の言葉でparamは(ネットモジュールを使用して)ソケットであることを言うことができます。関数funcでソケットに書きたいと思います。私は A.prototype.func =関数(){ A.write( 'STR')を書き込みます。 }; それがこのソケットということを認識しません。関数の書き込みは未確認であると言います。どのように私はparamが型ソケットのオブジェクトであることをコンパイラに伝えますか? – user690936

+0

オブジェクトをJavascriptにインストールするときに、 'this'変数を使ってプロパティにアクセスできます。あなたがしたいのは 'this.param.write( 'str');'です。私はJavaScriptでオブジェクトを操作する方法を学ぶには良いのリソースかもしれません:https://developer.mozilla.org/en/Introduction_to_Object-Oriented_JavaScript – fent

+0

私はそれを書いていないため申し訳ありませんが、それは私が書いたものです。 その後、私はあなたがオブジェクト 'A'をinstanstiatingていない推測している、とあなたがする必要がある – user690936