JavaScript函数原型链

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的构造函数。
容易混淆的是:获取一个对象的构造函数,当这个对象是原型对象的时候,获取的构造函数是与之名称相同的函数,如果不是原型对象的时候,那么获取的构造函数就从原型中去查找,即构造该对象的函数。

猜你喜欢

转载自blog.csdn.net/qq_25956141/article/details/81952388