--- tags: Vue 直播班 - 2021 夏季班 --- # 上課共筆文件 - 第一週 ## 語法糖與新增語法 ### 新增語法: * 箭頭函式(特性:自帶retrun) * let 、const #### 箭頭函式 ```javascript= => { return 結果 } => 回傳一個結果 => ({ 回傳物件 }) ``` ### 語法糖: 不會影響運作,邏輯與當前一致。 * 物件字面值 * 展開運算子:淺拷貝 ### 物件字面值: 物件中的函式縮寫 ``` //本來的寫法 const obj = { fn: function(){ console.log('ok'); } } //縮寫寫法 const obj = { fn(){ console.log('ok'); } } ``` 物件 key 和值相同時可縮寫 ``` //本來的寫法 const myName = "小明"; const person = { myName: myName } //縮寫寫法 const myName = "小明"; const person = { myName } ``` ### 展開: 陣列合併: ``` const groupA = ['A','B','C']; const groupB = ['D','E']; const groupAll = [...groupA,...groupB]; //groupA groupB 都被合併至 groupAll 了 ``` 把其他物件的方法合併過來: ``` const methods = { fn(){ console.log('methods fn') } } const methods2 = { ...methods, fn2(){ console.log('methods fn2') } } methods2.fn(); //可印出 methods fn ``` ### 解構: const { 變數名稱 } = 物件名稱; 如果在解構式裡放函式,不能加上括號。 ``` const {method()} = people; //錯誤 const {method} = people; //正確 ``` ### 樣板字面值: 可使用變數、運算結果、加入判斷式 **等號右邊的就可以大膽放入!** ``` const text = `${變數名稱}去吃飯`; ``` 運算結果 ``` function sum(a,b){ return a+b; } const text = `${sum(1,2)}`; ``` 加入判斷式(三元運算子),三元運算子寫法為:「判斷式 ? 如果是 true 要做什麼 : 如果是 false 要做什麼」 sum(1,2)>7 ? '超過7':'低於7' ``` function sum(a,b){ return a+b; } const text = `${sum(1,2)}${sum(1,2)>7 ? '超過7':'低於7'}`; ``` ### 陣列處理方法: 除了forEach,其他迴圈手法都會產生空陣列 map的長度會跟原始陣列一模一樣 使用 map 方法回傳物件格式,並使用箭頭函式的縮寫時,要用小括號括起來 ``` const map = people.map(item=> ({ text: `${item.name}` }) ); ``` filter 回傳符合條件的陣列 ``` const filter = people.filter(item=>item.price>90) ``` * [JavaScript 陣列處理方法 [filter(), find(), forEach(), map(), every(), some(), reduce()] ](https://wcc723.github.io/javascript/2017/06/29/es6-native-array/) ## 第四周大魔王: API(第二周釋出) Component Props,Emits ESM(第一周釋出) 可能加碼協助:線上助教、加碼活動 ## 關注點分離: 是一個設計模式 **關鍵點:先定義資料** 關注點分離,常見的分離點 * 資料HTML, JS 分離 * 資料與方法分離 ## ESmodule (ESM) JS模組化分裝(依據功能) 可將外部JS引入近來 與傳統載入差別: 能管理、知道載入內容(不全部載入) 差別在封裝,不會汙染到全域 > [![](https://i.imgur.com/dYWG6qk.png) ]