1. 程式人生 > >JS基礎2.0

JS基礎2.0

1. js閉包

定義: 閉包就是能夠讀取其他函式內部變數的函式
作用: 讀取其他函式內部變數的函式,在本質上,閉包就是將函式內部和函式外部連線起來的一座橋樑

1.1 優劣勢
	優:可以讓函式的區域性變數儲存在記憶體中,實現區域性變數、資料共享
	劣:
		1.變數無法被回收,記憶體消耗大
		2.閉包會在父函式外部,改變父函式內部變數的值(資料不安全)

2. 物件屬性檢測

	2.1 in
		propertyName in Obj
		會從物件的例項屬性、繼承屬性裡進行檢測

	2.2 hasOwnProperty
		obj.hasOwnProperty(propertyName)
		只會檢測本身是否包含指定屬性,不會檢測繼承的屬性

3. js this關鍵字

分類:
	1. 當函式有所屬物件時,函式內的this指向所屬物件
	2. 當函式沒有所屬物件時,this指向window物件
	(以上倆點可以總結為:函式內部的this物件指向函式的呼叫者(擁有者))
	3. 構造器中的 this:指向新物件,通過 new 關鍵詞來呼叫建構函式,此時 this 會繫結在該新物件上	

	4. 如果建構函式返回一個物件,那麼this指向函式本身

4. call和apply

call:
	將函式指定到指定的作用域中執行(改變this的指向)
	b.call(a);	解:通過在call方法,把函式b新增到a的作用域環境中執行(函式b中this指向a)
引數:
call(作用域,引數1,引數2....) 引數1,引數2....:被呼叫函式自身的引數

apply
	作用與call一致
引數:
apply(作用域,[引數1,引數2....]) apply第二個引數為陣列,儲存函式自身的引數集合

4.1 注意點 
	當call和apply沒有指明作用域時,預設會指向window