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函数每执行一次就开辟一个内存区域,嵌套函数产生的闭包,多个子函数闭包共享父闭包,函数级别的继承,