首先,需要准备一个扩展的模板:
Function.prototype.method = function(name, func) {
if (!this.prototype[name]) {
this.prototype[name] = func;
console.log(this);
//return this;//如果需要级联调用的话
}
}
然后,为我们需要的内置对象扩展静态方法:
1.无参数扩展方法
Number.method('ToInteger', function() {
return this < 0 ? Math.ceil(this) : Math.floor(this);
});
2.有参扩展方法
String.method("Show",function(name){
return 'Hello'+name+'!';
});
这儿的this,就是内置对象本身,如果学过C#的朋友,完全可以联想到C#的扩展方法。
那么,我们在调用的时候,就可以直接通过编译器的提示访问到我们的扩展方法。
console.log((3.2).ToInteger())//结果为3。
接下来写一个直接可以让JS原生函数parseInt()和parseFloat()弃之高阁的方法:
function parseNumber(input) {return input*1;};
代码很简单,思想很巧妙,根据JS的运算原则,经过这一个函数的输入内容,若能够被转成数字,则转,否则,返回NaN。
于是乎,直接将其扩展到String上,
String.method('toNumber',function(input){
return this*1;
})
好了,大家试试在控制台瞧瞧"3.141592654".toNumber()的结果