函数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。