this
関数がコンストラクターとして呼び出されたときに、それ自体を参照します。これは、すぐに呼び出される関数式 (IIFE) を使用して行うことができます。
var cooking = (function () {
return new function () {
this.dessert = "Ice Cream";
this.numberOfPortions = 20;
this.doubleLunch = function () {
this.numberOfPortions = 40;
document.write(this.numberOfPortions);
};
}
})();
document.write(cooking.dessert);
デモ: http://jsfiddle.net/fk4uydLc/1/
ただし、プレーン オールド JavaScript オブジェクト (POJO) を使用して同じ結果を得ることができます。
var cooking = (function () {
var obj = {};
obj.dessert = "Ice Cream";
obj.numberOfPortions = 20;
obj.doubleLunch = function () {
obj.numberOfPortions = 40;
document.write(obj.numberOfPortions);
};
return obj;
})();
document.write(cooking.dessert);
デモ: http://jsfiddle.net/vmthv1dm/1/
コンストラクターを複数回使用する予定がある場合は、@Quentin が言及したアプローチが適しています。
function Cooking() {
this.dessert = "Ice Cream";
this.numberOfPortions = 20;
this.doubleLunch = function () {
this.numberOfPortions = 40;
document.write(this.numberOfPortions);
};
}
var cooking = new Cooking();
document.write(cooking.dessert);
デモ: http://jsfiddle.net/jsd3j46t/1/