2017-10-29 8 views
1

ノードjsに1つのツールを書いています。私はノードjsにいくつかのPOJOを定義したかったのです。私はノードjで多くの経験がありません。私はクラスがエンティティを定義するために使用されるJAVAのバックグラウンドから来ました。私が今エンティティを定義している方法の1つは次のとおりです。 -ノードjs:エンティティクラスを定義する最良の方法

function Person(name) { 
    this.name = name; 
    this.values = []; 
    this.characteristics = {}; 
} 

しかし、これは1つのJSファイルで定義されています。それを他のJSファイルで利用できるようにするには、この関数をエクスポートする必要があります。これはエンティティを定義する最善の方法ですか、それともクラスの種類の形式を何か定義できる他の方法はありますか?

+0

Object.create(obj)しようとmodelarに渡されているように、新しいオブジェクトのプロトタイプを割り当てることObject.create(obj)でオブジェクトを作成することができ、それがモデルを定義するクラスを使用しています。 http://modelar.hyurl.com。 Personを定義する方法は古いスタイルです。クラスを試してみてください。 –

答えて

2

これは、オブジェクトを作成するのには問題ありません。もしあなたがmongoのようなDBを使い始めるなら、あなたはmongooseでオブジェクトを作るほうが良いかもしれませんが、それは個人的な好みです。あなたの例のためとして -

1)輸出者

module.exports = Person; 

2)輸入者、別のファイルから

const Person = require('../path/to/Person'); 

3))(非常に重要なコンストラクタを呼び出すためにnewキーワードで人を作成します。

const mitch = new Person('Mitch'); 

javascript's prototypeにお読みください。すべてのオブジェクトにはObject.prototypeへの参照があります。そして、あなたがオブジェクトを作成し、参照がHere's an example from MDN

// Shape - superclass 
function Shape() { 
    this.x = 0; 
    this.y = 0; 
} 

// superclass method 
Shape.prototype.move = function(x, y) { 
    this.x += x; 
    this.y += y; 
    console.info('Shape moved.'); 
}; 

// Rectangle - subclass 
function Rectangle() { 
    Shape.call(this); // call super constructor. 
} 

// subclass extends superclass 
Rectangle.prototype = Object.create(Shape.prototype); 
Rectangle.prototype.constructor = Rectangle; 

var rect = new Rectangle(); 

console.log('Is rect an instance of Rectangle?', 
    rect instanceof Rectangle); // true 
console.log('Is rect an instance of Shape?', 
    rect instanceof Shape); // true 
rect.move(1, 1); // Outputs, 'Shape moved.' 
関連する問題