基礎知識點
-
選中html物件 domcument.documentElement
-
選中body或同級元素,直接用documentElement.body(或其他標籤名就好)
-
API
- Object
- 方法
- keys():傳入一個json物件,返回該物件的所有key組成的陣列
- 方法
- Object
-
事件引數物件 event
- 方法
- stopPropagation():阻止事件冒泡
- stopImmediatePropagation():取消事件新增效果,使第一個事件之外新增的所有事件失效
- preventDefault():阻止事件預設行為
- 屬性
- target: 點選的物件
- currentTarget: 事件繫結的物件
- 方法
e.currentTarget=====事件繫結的物件,e.target=====點選的物件(簡單來說,就是如果事件繫結的物件內部還有子元素,點選該子元素也會觸發事件,此時target指的就是子元素,而currentTarget則是事件繫結物件本身(ps:個人理解))
複製程式碼
ES6
-
變數
- 宣告關鍵字
- var的缺點
- 重複宣告不報錯
- 無法限制修改
- 沒有塊級作用域
- 定義全域性時會掛載全域性物件window上
- 對應ES6的宣告方式let const
- 支援塊級作用域
- 重複宣告會報錯
- 省略閉包
- 不會汙染window
- var的缺點
- 宣告方式
- 解構賦值
- 實現前提
- 左右結構必須一致
- 右側格式必須符合規範
- 必須宣告同時進行初始化
- 實現前提
- 解構賦值
- 宣告關鍵字
-
函式
- 箭頭函式 () => {}
- 在只有一個引數時可以省略():e=> {}
- 在函式體只有一個return時可以省略{}:()=>return;
- 箭頭函式中的this在建立時就會固定,而不會再出現一定指向呼叫物件的現象
- 函式引數
- 引數擴充套件:
- 引數收集:...args
- 陣列展開:...arr
- 預設引數
- es6支援在函式定義時可以以給形參初始化的方式進行引數預設,若函式呼叫時未傳入該引數,則依照預設值進行函式呼叫
- 引數擴充套件:
- 箭頭函式 () => {}
-
陣列
- map 對映 一對一
- 傳入一個函式,返回陣列內每個元素操作後組成的新陣列
- reduce 彙總 多對一
- 三個形參
- temp 中間值--即上一次計算的結果值,第一次的值因為沒有計算,所有值等於陣列的第一個元素
- item 項值 從陣列第二項開始
- index 項索引 從1開始
- 返回一個總值
- 三個形參
- filter 過濾器
- 通過return 布林值進行決定陣列是否保留
- 返回一個陣列
- map 對映 一對一
-
字串
- 方法
- startsWith(str):首子字串匹配 返回boolean
- endsWith(str):尾子字串匹配
- 字串模板
- 引入``定義str的方式,仿用資料庫,存在${}佔位符的寫法
eg: let addStr = `c`; let str = `ab${addStr}d`; console.log(str);//abcd 複製程式碼
- 方法
-
json
- JSON物件
- json簡寫
- key-value相同時可以只寫一個;
- 內部存在方法可以省略: function部分;
- 方法
- JSON.stringify(json); json物件序列化,即轉化成字串
- JSON.parse(); json型別字串轉換成json物件
- encodeURIComponent(json型別的字串)
- json標準寫法:
- key必須用""包裹
- 只能使用雙引號
-
ES6的物件導向
- 新增class關鍵字
- 內部定義
- constructor方法(構造器)
- 普通方法
- 意義
- 將構造器和類分開了
- 方法可內部定義,避免了原型情況的向外暴露
- 內部定義
- 新增extends關鍵字
- super方法指向父類
- 新增class關鍵字
-
Promise(承諾)
- 意義:
- 消除非同步操作:本質上是底層封裝非同步操作
- 其實就是簡化非同步請求的寫法:最好用到解構賦值
- 使用:
- 原生
- new建立Promise例項
- 構造傳參匿名函式,函式傳參resovle,reject(其實就是成功或失敗時呼叫的函式,在then方法呼叫時傳入)
let p = new Promise(function (resovle,reject){ # 請求 }); p.then(function (arr){ # 成功的回撥函式 },function(err){ # 失敗的回撥函式 }); 複製程式碼
- jq中封裝
- jq中的ajax是有返回值的,其實就是一個Promise的例項
- 而Promise的類方法存在all+then
- all()傳參是Promise的例項陣列arr
- then()傳參是成功resovle和失敗reject的回撥函式,resovle的引數是一個陣列,內容是arr中每一個請求的返回資料(ps:可以通過解構賦值進行簡單賦值);
- 當所有請求成功,則會執行resovle函式;失敗則執行reject函式;
- 原生
- 方法
- then 傳參為成功和失敗兩個回撥函式
- all
- race 競賽 有一個成功及成功,但存在對效能的消耗,因為對一個資源多次請求
- 有Promise之後的非同步
Promise.all([$.ajax請求陣列]).then(results=>{ # 成功的回撥函式 }, err=>{ # 失敗的回撥函式 }); 複製程式碼
- 意義:
-
generator (生成器)
- 特點
- 相對於函式執行到底的特點,生成器生成函式可以中斷
- 生成器函式的函式名前存在*號
- 生成器函式執行後只會產生一個物件,該物件存在next方法,在函式體內從上至下執行到yield命令就停止;
- 本質:其實就是建立了多個函式,每次呼叫next方法即是呼叫一個函式
- yield
- 特點
- 既可以傳參,又可以賦值
- 返回值是一個json物件{value:;done:boolean}
- 可以在next呼叫進行傳參
- 既可以傳參,又可以賦值
- 特點
- 特點