オブジェクト指向には2種類ある

  • プロトタイプベース
  • クラスベース

JSはプロトタイプベースのオブジェクト指向言語

コンストラクタの代わりに、プロパティを利用する

var proto = {
    hoge: 4,
    foo: 2
}

var makePerson = function(name, age){
    var person = Object.create(proto);
    makePerson.name = name;
    makePerson.age = age;
    
    return person;
}

var firstPerson = makePerson(‘Joe’, 24);
var secondPerson = makePerson(‘Sam’, 30);

クラスベースのオブジェクト指向言語のように、インスタンスを作る際に new も使用できるが、
Object.create を使用するのがベストプラクティス

参考書籍

シングルページWebアプリケーション ―Node.js、MongoDBを活用したJavaScript SPA