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方法,就可以自动为自定义对象们添加方法了,十分方便。

posted @ 2013-11-06 16:03  stefanlee  阅读(255)  评论(0编辑  收藏  举报