Javascript 两种 function 定义的区别
大家都知道Javascript 有两个种定义Function的方法非常常用。例如
function a(){alert("a")} var a = function(){alert("a")}
在javascript中任何函数都是Function的对象,一种我们叫做隐式创建,一种叫显示创建,
啥叫显示创建,就是写出来有个关键字NEW,(可以不算很科学的先这样理解)例如
var test=new Function(cs1,cs2….csN,function-body)
注意里面的cs1,cs2..表示参数,而function-body表示函数体,利用函数对象变量名就可以调用该函数,可以这样调用test(cs1,cs2…),或者赋值给某个变量同样,可以用那个变量调用。
var test=new Function("cs1","cs2","alert(cs1+cs2)"); test(1,2);
效果等同于我们的隐式创建
function test(cs1,cs2) { alert(cs1+cs2); } test(1,2) // var test1=test; //test1(1,2);
所以大家隐式对象的时候,一定要想着它是通过new 关键字创建的Function对象,
alert(test.toString());
就可以输出函数体的代码
除此之外,通常情况下,我们还会使用无名函数来创建函数
var test=function(cs1,cs2) { alert(cs1+cs2); } test(1,2);
效果等同于我们的显示创建,那么既然是创建的函数变量是对象,我们就可以给变量添加新的属性和方法,而在我们的js中方法就是特别的属性,这点需要注意
test.love="i love php"; alert(test.love); test.php=function(msg) { alert(msg); } test.php("how to study php!");