function F(){ this.name = "111"; this.say = function(){alert(222);} alert(333); } var f1 = new F();//333 alert(f1.name);//111 f1.say();//222 f1();// f1 is not a function , f1是java里面的对象,不能()执行 var f2 = function(){ //f2也可以看成是一个类,跟上面写法一样 this.name1 = "444"; this.say1 = function(){alert(555);} alert(666); } f2();//666,f2当成c++里面的函数地址看,只能小括号执行,没有对象的属性方法 alert(f2.name1);//undefined,不能当成对象看,因为对象只有3中,var o = {},var o = new Object(),var o = new F() f2.say1();//f2.say1 is not a function function ff(){} var f = new ff(); //一个对象生成,跟java一样 ff(); //函数调用,跟C++一样,函数名F是函数地址,F()是调用函数执行。 function f(){ var num = 1; return function(){//把子类对象return出去,每return一次都是一个新的对象 num++; alert(num); } } var r1 = f(); r1();//2 r1();//3 var r2 = f();//2个对象 r2();//2 r2();//3 函数每执行一次就开辟一个内存区域,嵌套函数产生的闭包,多个子函数闭包共享父闭包,函数级别的继承,
function test(){ function(){ //不能这么写 for(var i = 1 ; i <=5; i++){ //i alert(i); } } var d = function(){//不能不写var d = ,语法过不了,此时把函数里面当成类里面看待。可以这么写,但是函数不执行 for(var i = 1 ; i <=5; i++){ //i alert(i); } }
function test(){
function b(){ //可以这么写
}
}
函数当类看时,跟java一样。 类里的函数和原型里的函数当对象的成员函数看,类里的属性和原型里的属性当成对象的成员变量看。
函数当函数看是,当成普通函数看就是当成函数地址看。