JS基礎2.0
阿新 • • 發佈:2018-11-04
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