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