国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
js語言規(guī)范ES5、6、7
## **理解ES**
1. 全稱: ECMAScript
2. js語言的規(guī)范
3. 我們用的js是它的實現(xiàn)
4. js的組成
  * ECMAScript(js基礎)
  * 擴展-->瀏覽器端  
    * BOM
    * DOM
  * 擴展-->服務器端
    * Node.js
      
## ES5
1. **嚴格模式**
  * 運行模式: 正常(混雜)模式與嚴格模式
  * 應用上嚴格式: 'strict mode';
  * 作用: 
    * 使得Javascript在更嚴格的條件下運行
    * 消除Javascript語法的一些不合理、不嚴謹之處,減少一些怪異行為
    * 消除代碼運行的一些不安全之處,保證代碼運行的安全
    * 需要記住的幾個變化
      * 聲明定義變量必須用var
      * 禁止自定義的函數(shù)中的this關鍵字指向全局對象
      * 創(chuàng)建eval作用域, 更安全
      
2. **JSON對象**
  * 作用: 用于在json對象/數(shù)組與js對象/數(shù)組相互轉換
  * JSON.stringify(obj/arr)
      js對象(數(shù)組)轉換為json對象(數(shù)組)
  * JSON.parse(json)
      json對象(數(shù)組)轉換為js對象(數(shù)組)
      
3. Object擴展
  * Object.create(prototype[, descriptors]) : 創(chuàng)建一個新的對象
    * 以指定對象為原型創(chuàng)建新的對象
    * 指定新的屬性, 并對屬性進行描述
      * value : 指定值
      * writable : 標識當前屬性值是否是可修改的, 默認為true
      * **get方法** : 用來得到當前屬性值的回調函數(shù)
      * **set方法** : 用來監(jiān)視當前屬性值變化的回調函數(shù)
  * Object.defineProperties(object, descriptors) : 為指定對象定義擴展多個屬性
  
4. Array擴展
  * Array.prototype.indexOf(value) : 得到值在數(shù)組中的第一個下標
  * Array.prototype.lastIndexOf(value) : 得到值在數(shù)組中的最后一個下標
  * **Array.prototype.forEach(function(item, index){}) : 遍歷數(shù)組**
  * **Array.prototype.map(function(item, index){}) : 遍歷數(shù)組返回一個新的數(shù)組**
  * **Array.prototype.filter(function(item, index){}) : 遍歷過濾出一個子數(shù)組**
  
5. **Function擴展**
  * Function.prototype.bind(obj)
      * 將函數(shù)內的this綁定為obj, 并將函數(shù)返回
  * 面試題: 區(qū)別bind()與call()和apply()?
      * fn.bind(obj) : 指定函數(shù)中的this, 并返回函數(shù)
      * fn.call(obj) : 指定函數(shù)中的this,并調用函數(shù)
      
6. Date擴展
  * Date.now() : 得到當前時間值
  
## ES6
1. **2個新的關鍵字**
  * let/const
  * 塊作用域
  * 沒有變量提升
  * 不能重復定義
  * 值不可變
  
2. **變量的解構賦值**
  * 將包含多個數(shù)據(jù)的對象(數(shù)組)一次賦值給多個變量
  * 數(shù)據(jù)源: 對象/數(shù)組
  * 目標: {a, b}/[a, b]
  
3. 各種數(shù)據(jù)類型的擴展
  * 字符串
    * **模板字符串** 
      * 作用: 簡化字符串的拼接
      * 模板字符串必須用``
      * 變化的部分使用${xxx}定義
    * contains(str) : 判斷是否包含指定的字符串
    * startsWith(str) : 判斷是否以指定字符串開頭
    * endsWith(str) : 判斷是否以指定字符串結尾
    * repeat(count) : 重復指定次數(shù)
         
  * 對象
    * **簡化的對象寫法**
      ```
      let name = 'Tom';
      let age = 12;
      let person = {
          name,
          age,
          setName (name) {
              this.name = name;
          }
      };
      ```
    * Object.assign(target, source1, source2..) : 將源對象的屬性復制到目標對象上
    * Object.is(v1, v2) : 判斷2個數(shù)據(jù)是否完全相等
    * __proto__屬性 : 隱式原型屬性
     
  * 數(shù)組
    * Array.from(v) : 將偽數(shù)組對象或可遍歷對象轉換為真數(shù)組
    * Array.of(v1, v2, v3) : 將一系列值轉換成數(shù)組
    * find(function(value, index, arr){return true}) : 找出第一個滿足條件返回true的元素
    * findIndex(function(value, index, arr){return true}) : 找出第一個滿足條件返回true的元素下標
  * 函數(shù)
    * **箭頭函數(shù)**
      * 用來定義匿名函數(shù)
      * 基本語法:
        * 沒有參數(shù): () => console.log('xxxx')
        * 一個參數(shù): i => i+2
        * 大于一個參數(shù): (i,j) => i+j
        * 函數(shù)體不用大括號: 默認返回結果
        * 函數(shù)體如果有多個語句, 需要用{}包圍
      * 使用場景: 多用來定義回調函數(shù)
    * **形參的默認值**
      * 定義形參時指定其默認的值
    * **rest(可變)參數(shù)**
      * 通過形參左側的...來表達, 取代arguments的使用
    * **擴展運算符(...)**
      * 可以分解出數(shù)組或對象中的數(shù)據(jù)
    
4. set/Map容器結構
  * 容器: 能保存多個數(shù)據(jù)的對象, 同時必須具備操作內部數(shù)據(jù)的方法
  * 任意對象都可以作為容器使用, 但有的對象不太適合作為容器使用(如函數(shù))
  * **Set的特點**: 保存多個value, value是不重復 ====>數(shù)組元素去重
  * **Map的特點**: 保存多個key--value, key是不重復, value是可以重復的
  * API
    * Set()/Set(arr) //arr是一維數(shù)組
    * add(value)
    * delete(value)
    * clear();
    * has(value)
    * size
    * 
    * Map()/Map(arr) //arr是二維數(shù)組
    * set(key, value)
    * delete(key)
    * clear()
    * has(key)
    * size
    
5. **for--of循環(huán)**
  * 可以遍歷任何容器
  * 數(shù)組
  * 對象
  * 偽/類對象
  * 字符串
  * 可迭代的對象
  
6. **Promise**
  * 解決`回調地獄`(回調函數(shù)的層層嵌套, 編碼是不斷向右擴展, 閱讀性很差)
  * 能以同步編碼的方式實現(xiàn)異步調用
  * 在es6之前原生的js中是沒這種實現(xiàn)的, 一些第三方框架(jQuery)實現(xiàn)了promise
  * ES6中定義實現(xiàn)API: 
    ```
    // 1. 創(chuàng)建promise對象
    var promise = new Promise(function(resolve, reject){ 
      // 做異步的操作 
      if(成功) { // 調用成功的回調
        resolve(result); 
      } else { // 調用失敗的回調
        reject(errorMsg); 
      } 
    }) 
    // 2. 調用promise對象的then()
    promise.then(function(
      result => console.log(result), 
      errorMsg => alert(errorMsg)
    ))
    ```
7. **class類**
  * 用 class 定義一類
  * 用 constructor() 定義構造方法(相當于構造函數(shù))
  * 一般方法: xxx () {}
  * 用extends來定義子類
  * 用super()來父類的構造方法
  * 子類方法自定義: 將從父類中繼承來的方法重新實現(xiàn)一遍
  * js中沒有方法重載(方法名相同, 但參數(shù)不同)的語法
  
8. **模塊化(后面講)**

## ES7
* 指數(shù)運算符: **
* Array.prototype.includes(value) : 判斷數(shù)組中是否包含指定value
  
  
* **區(qū)別方法的2種稱謂**
  * 靜態(tài)(工具)方法
    * Fun.xxx = function(){}
  * 實例方法
    * 所有實例對象 : Fun.prototype.xxx = function(){} //xxx針對Fun的所有實例對象
    * 某個實例對象 : fun.xxx = function(){} //xxx只是針對fun對象
本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
2019前端面試系列——JS面試題
js數(shù)組的操作
初、中級前端應該要掌握的手寫代碼實現(xiàn)
ES6,ES7,ES8,ES9,ES10新特性一覽
字節(jié)跳動最愛考的web前端面試題:計算機網(wǎng)絡基礎
JavaScript 10分鐘入門
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服