JavaScript_Function

函數function
function是js中的關鍵字
Function是js中的一個對象

需要明白的是函數和類之間的區別,函數更像方法,用來調用。
但函數可以採用new來生成函數對象,而方法不行。所以函數
也可以理解爲類。A指向Function對象,這個對象包括了一系列的
命令字符串,例如”this.name="ck";“,所以A可以看做一個類,因爲它包含了
屬性和方法,而這些屬性和方法在Function對象裏只是字符串,只有
生成A對象時,這些字符串纔會被解析成屬性和方法。

JavaScript是一個沒有類的語言,它的思想是對象包含對象。最初的對象可以
是Function也可以是Object。

使用function創建函數
function func(){
 //函數體(可以嵌套function)
}
使用Function創建函數
var func = new Function(參數列表,"函數體");//函數體也屬於參數,是一個字符串

使用function創建函數的原理實際上是生成Function對象
將func()中的參數作爲對象的參數列表,{}中的作爲函數體。
所以,如果函數名相同,函數會被覆蓋,因爲同名的函數對象的引用改變了。
var func = new Function("alert()");
var func = new Function("alert(1)");
func();//彈出警告框,內容爲1
由於JavaScript中只有var類型,所以類型不會出現不兼容的問題,所以變量正確引用另一個對象。
(聲明變量不能同名的原因:有多個數據類型,編譯器不能保證同名的變量數據類型一致,如果不一致,
說明有兩個對象,引用名相同則會導致不知處理那個對象)

function func(){
 alert(arguments[0]);
}

var func_2 = new Function("alert(arguments[0]);");

func(1); //output 1
func_2(2); //output 2

 

JavaScript利用函數面向對象
在java中Class是一個類,在JavaScript中Function是一個類
Function可以理解爲類,並且比java中的類更靈活
function func(可以傳參數){
 //可以自定義屬性
 this.name = "ck";
 //可以自定義方法
 this.showName = function(){alert(this.name);}
 //this表示func,相當於this表示java中的當前類
}


生成對象
var fun = func;//按照javascript的思想是不需要使用new的,包括Object, 可以直接寫成obj = Object
or
var fun = new func;
or
var fun = new func(參數);
or
var fun = func(參數);

使用方法
fun.methodName();
 

在函數對象出來後,也可以通過對象.屬性的方式聲明屬性和方法,
因爲對象都繼承了Object。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章