1. 程式人生 > >JavaScript函式原型鏈

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的建構函式。
容易混淆的是:獲取一個物件的建構函式,當這個物件是原型物件的時候,獲取的建構函式是與之名稱相同的函式,如果不是原型物件的時候,那麼獲取的建構函式就從原型中去查詢,即構造該物件的函式。