1. 物件、變數與型別
    1. JavaScript 物件可以指派給一個變數並會在執行時期擁有型別
      1. 執行時期
        1. 根物件
      2. 練習
        1. 出現過幾個記憶體物件 ?
        2. 出現過幾個變數 ?
        3. 出現過幾種型別 ?
      3. 開發時期
        1. 打程式的時候
  2. 物件
    1. 記憶體中的硬體資料
      1. 先執行先存在記憶體
        1. 當沒有人指向它,就立刻回收它
  3. 變數
    1. 儲存東西的
      1. 再assign位置給變數
    2. var 變數 只能var 一次,第二次就會忽略
    3. 不能被刪除除非重新整理頁面
    4. 一定要宣告,不然會是window的屬性
      1. undefined
        1. 存取不存在的屬性
      2. error not defined
        1. 存取不存在的變數
      3. 10
    5. 變數沒有型別轉換、沒有傳值
      1. 他只是重新指標新的/不同型別的物件、傳位址
    6. call by value reference
      1. 指向值的參考
        1. 和傳參考/傳值不一樣 變數裡不會有值
  4. 屬性
    1. 名稱
      1. 一定是字串
    2. 指標
      1. 跟變數一樣
    3. 可以被刪除
  5. 雜湊陣列
  6. Javascript物件導向基礎
    1. 不建議用物件導向寫javascript
    2. javascript不需要藍圖就可以建
      1. var obj = {}
    3. 繼承
      1. 不要隨便亂加,因為每一個繼承上層物件的物件都會繼承
      2. hasOwnProperty
        1. 繼承來的會returnfalse
      3. instanceof
        1. 例如在建構式裡檢查this是屬於誰?
      4. new
        1. 如果沒有new的話,建構式裡的this會指向window
          1. 解決
          2. 用apply
          3. call
  7. 型別
    1. 動態型別語言
      1. 弱型別語言
        1. 不同的型別帶來不同的方法 function
        2. 執行要在後面加()
        3. 真正有型別的是物件本身
        4. 而不是變數有型別
    2. 物件型別
      1. 可以自由擴增屬性
        1. 判斷屬性是否存在?
      2. 所有東西都是物件型別
        1. 除了原始型別
      3. 物件
        1. 建立物件
        2. 用實字表示法
      4. 多國語系網站
        1. 建議重頭到尾都用GMT
      5. 正則表達式
        1. 轉換身分證字號等等
      6. 節省效能
      7. 函式
        1. return
        2. 一級作用域
        3. scope
        4. var的重要性
        5. function劃分範圍
        6. IIFE 立即涵式
        7. 常見的design pattern
        8. 要改掉用全域變數的習慣
        9. hoisting
        10. javascript會自動將為宣告的變數提升
        11. 教訓:千萬不要想到哪var到哪
        12. 自己hoisting, 免得後續維護有人插在前面用變數
        13. function下就先var
        14. for迴圈也自己hoisting
        15. 閉包
        16. 外層宣告變數可以在內層使用
        17. 使用閉包的MyFunc function的design pattern就是閉包
        18. why
        19. 閉包提供一種封裝
        20. 將區域變數存取起來
        21. 外面的人取用不到
        22. 也不會污染全域變數
    3. 原始型別
      1. 數值
      2. 字串
      3. 布林值
        1. falsy 除了以下,其他都是truethy
        2. 0
        3. ''
        4. false
        5. null
        6. 盡量不要用
        7. typeof null // 'object'
        8. 作者說當初是bug
        9. 但後來寫進規格
        10. == null
        11. undefined
        12. ie8
        13. undefined = window.undefined2
        14. NAN
        15. 盡量不要用
        16. typeof NAN // Number
        17. isNAN
        18. 任何兩個物件型別(非原始型別)相比,永遠是false
        19. 跟任何東西比都是false 只能跟自己比
        20. 跟任何東西包括自己比都是false
        21. isNAN
        22. window.isNAN
        23. == / !=
        24. 隱含型別
        25. 會引發自動轉型
        26. === / !==
        27. 明確比對
      4. null
      5. undefined
  8. tools & reference
    1. emoji
    2. javascript 混淆器
    3. about:blank