Function的使用
任何函数都是由Function函数构造出来的,Function的使用方法如下。
var func = new Function(arg1,arg2,arg3,…,methodBody);
Function中的所有方法都是字符串类型,methodBody表示方法体,也是字符串类型。
//使用Function构造如下函数
/*
function func(a){
console.log(a);
}
*/
var func = new Function("a","console.log(a)");
//使用Function构造如下函数
/*
function foo(){
if(arguments.length == 0){
return null;
}else{
var max = 0;
for(var i = 0;i<arguments.length;i++){
if(arguments[i] > max){
max = arguments[i];
}
}
return max;
}
}
*/
var fun = new Function("if(arguments.length == 0){"+
"return null;"+
"}else{"+
"var max = 0;"+
"for(var i = 0;i<arguments.length;i++){"+
"if(arguments[i] > max){"+
"max = arguments[i];"+
"}"+
"}"+
"return max;"+
"}");
由此可见,任何函数都可以有Funciton构造,同样的,任何函数都是由Function构造。
foo()函数的原型链
foo()也是一个对象,他也是由Object.prototype派生,构造器为Function,如下为foo()的原型链图。
foo由构造函数Function构造,那么Function又是由谁构造呢?Function构造自己。
我们要记住的是,任何函数都由Function构造,包括Object的构造函数。
容易混淆的是:获取一个对象的构造函数,当这个对象是原型对象的时候,获取的构造函数是与之名称相同的函数,如果不是原型对象的时候,那么获取的构造函数就从原型中去查找,即构造该对象的函数。