1. 建構函式定義
function Pasta(grain, width, shape, hasEgg) {
this.grain = grain; // 穀物
this.width = width; // 寬度
this.shape = shape; // 形狀
this.hasEgg = hasEgg; // 是否含蛋
}
2. 建立實例
var spaghetti = new Pasta("wheat", 0.2, "circle", true);
var linguine = new Pasta("wheat", 0.3, "oval", true);
3. 動態添加實例屬性
spaghetti.color = "pale straw";
spaghetti.drycook = 7;
// 其他實例不受影響
4. 原型擴充全體實例
Pasta.prototype.foodgroup = "carbohydrates";
// spaghetti.foodgroup、linguine.foodgroup 皆可用
5. 封裝方法於建構函式
function Pasta(grain, width, shape, hasEgg) {
this.grain = grain;
this.width = width;
this.shape = shape;
this.hasEgg = hasEgg;
this.toString = pastaToString; // 參考外部函數
}
function pastaToString() {
return "Grain: " + this.grain + " Width: " + this.width +
" Shape: " + this.shape + " Egg: " + this.hasEgg;
}
var sp = new Pasta("wheat", 0.2, "circle", true);
window.alert(sp); // 自動呼叫 toString()