物件建立的三種方式和閉包的兩種常用場景--js
阿新 • • 發佈:2018-12-11
物件建立的三種方式
①通過new關鍵字建立物件
var obj = new Object();
obj.name = 'daxue';
obj.age = 28;
obj.fun = function(){
}
alert(obj.age);
②簡單字面量
var obj2 = {};
obj2.name = "ben";
obj2.sex = "女";
obj2.fun2 = function(){
alert(this.name)
}
obj2.fun2();
②-①巢狀字面量
var obj3 = { name : "bob", age : 20, fun3:function(){ // console.log(this.name); alert(this.name); } } obj3.fun3();
第三種建立物件的方式
function Person(name,age){
this.name = name;
this.age = age;
this.fun4 = function(){
return this.name;
}
}
var p = new Person('sonia',19);
alert(p.name);
閉包的兩種的常見應用場景
封閉函式是js中匿名函式的另一種寫法,建立一個一開始就執行而不用命名的函式 1、一般函式的定義和執行函式 2、封閉函式的定義和執行:(function(){...})();還可以在函式定義前加上"~"或者"!"符號來定義匿名函式。
/* (function(){
.....
})();
*/
// 閉包是函式巢狀函式,內部函式可以引用外部函式的引數和變數,引數和 // 變數不會被垃圾回收機制收回 // 閉包的應用1: 將一個變數長期駐紮在記憶體當中,可用於迴圈中存索引值
window.onload = function(){ var aLi = document.getElementsByTagName('li'); for (var i = 0;i<aLi.length;i++){ //m為形參 (function(m){ aLi[m].onclick = function(){ console.log(m); } })(i); } }
// 閉包的用途2: 私有化變數計數器,外部無法訪問,避免全域性變數的汙染
window.onload = function(){
//封閉函式
var count = (function (){
var a =0;
//閉包(函式巢狀函式)
function b(){
a++;
return a;
}
return b;
})();
count();
console.log(count())//輸出2
console.log(count())//輸出3
}