2011-11-28 8 views
5

クラスの配列を作成するにはどうすればよいですか?NodeJSでクラスを作成

は、私はそれをこのような何かを参照してください。

var _i = 0; 
var mySuperClass = function(ar) { 
_i = ar; 
} 

mySuperClass.prototype.getI = function() 
{ 
    return _i 
} 
module.exports.create = function() { 
    return new mySuperClass(); 
} 
module.exports._class = mySuperClass; 

はexecの後、私はエラーを取得する

.... 
mySuperClass = require('./mySuperClass.js'); 
objArray = new Object(); 
... 
objArray["10"] = new mySuperClass(10); 
console.log(objArray["10"].getI); 
objArray["20"] = new mySuperClass(20); 
console.log(objArray["20"].getI); 
objArray["30"] = new mySuperClass(30); 
console.log(objArray["30"].getI); 

mySuperClass.jsに

main.js内を

TypeError: object is not a function at Object.CALL_NON_FUNCTION_AS_CONSTRUCTOR (native)

私が訂正する必要があるものt?

+0

ああ、申し訳ありません:(私の間違い...私は.create()について忘れています... – user1069386

答えて

3

私はそれが次を使用して仕事を得ることができた:私はここで何を読むに基づいて

var _i = 0; 
var mySuperClass = function(ar) { 
_i = ar; 
} 

mySuperClass.prototype.getI = function() 
{ 
    return _i 
} 
/*module.exports.create = function() { 
    return new mySuperClass(); 
} */ 
module.exports.mySuperClass = mySuperClass; 

module = require('./myclass.js'); 
objArray = new Object(); 
objArray["10"] = new module.mySuperClass(10); 
console.log(objArray["10"].getI()); 
objArray["20"] = new module.mySuperClass(20); 
console.log(objArray["20"].getI()); 
objArray["30"] = new module.mySuperClass(30); 
console.log(objArray["30"].getI()); 

を:http://nodeguide.com/beginner.html#the-module-system、エクスポートオブジェクトにプロパティを追加し、そのようにそれらを使用しています。作成したものが予約されているかどうかはわかりませんが、必要がないことがわかりました。

1

変更これらの行:これまで

module.exports.create = function() { 
    return new mySuperClass(); 
} 
module.exports._class = mySuperClass; 

module.exports = mySuperClass; 

必要機能は、モジュールのmodule.exportの値を返します。この値をクラスのコンストラクタに設定すると、使用例のように使用できるコンストラクタが返されます。

現在、{ create: function() { ... }, _class: function (ar) { ... } }(関数内でmodule.exportsの値)のようなオブジェクトをコンストラクタとして呼び出そうとしています。このオブジェクトは関数ではないので、エラーメッセージがあなたに通知します。

しかし、クラスのインスタンスがグローバル変数_iを共有しているため、このソリューションだけではクラスの機能が期待どおりに機能しません。

関連する問題