1. 建構函式模式
function Circle(x, y, radius) {
this.x = x; // 圓心 x
this.y = y; // 圓心 y
this.r = radius; // 半徑
}
var myCircle = new Circle(5, 11, 99);
new 建立空物件,this 綁定該物件,建構函式初始化屬性,隱式回傳物件。
2. 原型共享方法
Circle.prototype.pi = Math.PI;
Circle.prototype.area = function() {
return this.pi * this.r * this.r;
};
var a = myCircle.area(); // 呼叫共享方法
- 原型屬性/方法按引用共享,所有實例可存取。
- 實例覆寫同名屬性會遮蔽原型屬性(僅影響該實例)。
3. 擴充內建型別
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g, "");
};
var s = " hello ";
s.trim(); // "hello"
- 為
String、Array、Date 等內建建構子原型添加方法,所有實例即可使用。
- 謹慎使用:污染全域原型可能導致庫衝突,現代開發偏好模組化工具函數。