JavaScript 是允許擴充基本類型的功能。例如,可以透過對Object.prototype增加方法,可以讓該方法對所有的物件都可用。 這樣的方式對函數,數組,字串,數字,正規表示式和布林值同樣適用。
例如,可以透過對Function.prototype 增加方法對所有的函數可用:
Function.prototype.method = function(name, func) { this.prototype[name] = func; return this; }
透過給Function.prototype 增加method方法,之後再增加方法直接呼叫mehod方法即可,而不必再寫prototype。例如,JavaScript沒有整形類型,我們可以透過為Number.prototype增加一個integer方法類別來實現。
Number.method("integer", function(){ return Math[this < 0 ? 'ceil' : ''floor'](this); }); console.log((-10 / 3).integer()); //out put -3
透過增加基本類型方法,可以大大提高語言的表現力。因為JavaScript原型繼承的動態本質,新的方法立刻被賦予到所有的物件實例上,包含在方法被增加之前就創建好的物件。
由於基本類型的原型是公用結構的,因此在使用類別庫的時候一定要小心。一個保險的做法就是只在確定沒有該方法的時候才添加它,例如:
Function.prototype.method = function(name, func) { if (!this.prototype(name)) { this.prototype[name] = func; } return this; };