JavaScript 是允許給基本類型擴充功能的。例如,可以通過對Object.prototype增加方法,可以讓該方法對所有的對象都可用。 這樣的方式對函數,數組,字元串,數字,正則表達式和布爾值同樣適用。 例如,可以通過對Function.prototype 增加方法對所有的函數可用: 通過給F ...
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; };