Function对象
Function对象是js中很重要的一个元素,js中所有自定义的函数都是Function对象,所以String,Number,Boolean,function等都是Function对象。所以,在使用typeof String,Number,function等时,我们都会看到会输出"function".接下来进入正题,
一般我们都是如此自定义一个函数
function test(num) {alert(name);}
如果使用Function进行test函数定义,则
var test = new Function("num","alert(name);");
上述两种都是自定义一个函数的方法,只不过一个是通过最常用的函数定义式,另一种是通过创建函数对象从而来定义一个函数。既然我们知道Function对象有如此的特性,那我们可以通过Function添加方法到所有自定义的对象中。如下
//给Function的原型对象添加一个method方法 Function.prototype.method = function(methodName, func){ this.prototype[methodName] =func;//这里已经给对象的原型添加了方法 return this; } //现在我们给String对象们添加一个字符扩展方法(String函数是Function对象) String.method("expand", function(){ alert(this.toString()+"..expand"); }); //String的原型已经添加了一个"expand"方法,调用它 var str = "hahah"; str.expand(); //输出"hahah..expand"
同理自定义对象也可以,如下:
function test() { this.testName = "test"; } test.method("showName", function() { alert(this.testName); }); var test1 =new test(); test1.showName(); //输出"test"
以上的这种方式,使得我们不必再使用test.prototype.showName=function(){}等方式添加自定义的方法,只需要调用method方法,就可以自动为自定义对象们添加方法了,十分方便。
I will be a better man