var add = (function () {
var counter = 0;
return function () {return counter += 1;}
})();javascript這個函數至關於定義了 函數()(),執行一次,html
add便等於 裏面的那個函數了! counter=0 被定義了一次java
add(); //返回1數組
add(); //返回2閉包
add() //返回3函數
總結, counter 是定義的局部變量, 只能經過add這個函數才能訪問到!,至關於java的privatethis
b.閉包的高級深層次的定義
var biPack =function () {
var counter = 0;
return function () {return counter += 1;}
};
var add=biPack();
debugger;
var i=null;
i=add(); //返回1
i=add(); //返回2
i=add(); //返回3
var b=biPack();
i=b(); // 返回1
i=add(); //返回4
debugger;spa閉包,爲每一個執行函數,新建新的內存地址, 若是沒有了引用,則會回收內存!prototype
var A=function(name){
this.name=name;
}
A.aPrivate="im a Private type"; // 把當成 一個類 這個是 A類的私有屬性 , a1,a2 ,中沒有
var a1=new A("b"); // a1 是a的一個對象
var a2=new A("c");
a1.a1Private="a1Private"; //a1. 添加一個屬性 ,a2中沒有
A.prototype.aPrototype="im a.prototype.aPrototype"; // a1,a2, 都有的屬性debug
var A=function(name){ this.name=name; } var c={}; c.name="jack"; var d={name:"rolse"} var a3=new A("d"); // a3 .是 A對象的引用 var e=new Object(); // c,d e 和 f 相同 都是 繼承 Object的對象 var f={}; //
var x = 1000 / "Apple";
isNaN(x); // 返回 true
var y = 100 / "1000";
isNaN(y); // 返回 false
var mycars = new Array();
mycars[0] = "Saab";
mycars[1] = "Volvo";
mycars[3] = "BMW";
mycars.push("im new car");arrayObj.pop(); //移除最後一個元素並返回該元素值
arrayObj.shift(); //移除最前一個元素並返回該元素值,數組中元素自動前移
詳情 參考 http://www.cnblogs.com/zhangzt/archive/2011/04/01/2002213.html
var a1=new A("b"); // a1 是a的一個對象
var mycars = new Array(); mycars[0] = "Saab"; mycars[1] = "Volvo"; mycars[3] = "BMW"; mycars[4]=a1; mycars.push("im new car");