1. 程式人生 > >物件建立的三種方式和閉包的兩種常用場景--js

物件建立的三種方式和閉包的兩種常用場景--js

物件建立的三種方式

①通過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
		}