1. 程式人生 > 其它 >js基礎總結深入

js基礎總結深入

## 資料型別的分類和判斷
* 基本(值)型別
  * Number ----- 任意數值 -------- typeof
  * String ----- 任意字串 ------ typeof
  * Boolean ---- true/false ----- typeof
  * undefined --- undefined ----- typeof/===
  * null -------- null ---------- ===
* 物件(引用)型別
  * Object ----- typeof/instanceof
  * Array ------ instanceof
  * Function ---- typeof
## 資料,變數, 記憶體的理解 * 什麼是資料? * 在記憶體中可讀的, 可傳遞的儲存了特定資訊的'東東' * 一切皆資料, 函式也是資料 * 在記憶體中的所有操作的目標: 資料 * 什麼是變數? * 在程式執行過程中它的值是允許改變的量 * 一個變數對應一塊小記憶體, 它的值儲存在此記憶體中 * 什麼是記憶體? * 記憶體條通電後產生的儲存空間(臨時的) * 一塊記憶體包含2個方面的資料 * 內部儲存的資料 * 地址值資料 * 記憶體空間的分類 * 棧空間: 全域性變數和區域性變數 * 堆空間: 物件 * 記憶體,資料, 變數三者之間的關係
* 記憶體是容器, 用來儲存不同資料 * 變數是記憶體的標識, 通過變數我們可以操作(讀/寫)記憶體中的資料 ## 物件的理解和使用 * 什麼是物件? * 多個數據(屬性)的集合 * 用來儲存多個數據(屬性)的容器 * 屬性組成: * 屬性名 : 字串(標識) * 屬性值 : 任意型別 * 屬性的分類: * 一般 : 屬性值不是function 描述物件的狀態 * 方法 : 屬性值為function的屬性 描述物件的行為 * 特別的物件 * 陣列: 屬性名是0,1,2,3之類的索引 * 函式: 可以執行的 * 如何操作內部屬性(方法) * .屬性名
* ['屬性名']: 屬性名有特殊字元/屬性名是一個變數 ## 函式的理解和使用 * 什麼是函式? * 用來實現特定功能的, n條語句的封裝體 * 只有函式型別的資料是可以執行的, 其它的都不可以 * 為什麼要用函式? * 提高複用性 * 便於閱讀交流 * 函式也是物件 * instanceof Object===true * 函式有屬性: prototype * 函式有方法: call()/apply() * 可以新增新的屬性/方法 * 函式的3種不同角色 * 一般函式 : 直接呼叫 * 建構函式 : 通過new呼叫 * 物件 : 通過.呼叫內部的屬性/方法 * 函式中的this * 顯式指定誰: obj.xxx() * 通過call/apply指定誰呼叫: xxx.call(obj) * 不指定誰呼叫: xxx() : window * 回撥函式: 看背後是通過誰來呼叫的: window/其它 * 匿名函式自呼叫: ``` (function(w, obj){ //實現程式碼 })(window, obj) ``` * 專業術語為: IIFE (Immediately Invoked Function Expression) 立即呼叫函式表示式 * 回撥函式的理解 * 什麼函式才是回撥函式? * 你定義的 * 你沒有呼叫 * 但它最終執行了(在一定條件下或某個時刻) * 常用的回撥函式 * dom事件回撥函式 * 定時器回撥函式 * ajax請求回撥函式(後面講解) * 生命週期回撥函式(後面講解)