ES6數組和對象的擴展


es6數組的擴展

  1. 擴展運算符

擴展運算符是對具有Iterator 接口的對象,都可以使用擴展運算符

  1. Array.from()

用於將兩類對象轉化為真正的數組 1.類似數組的對象(只要據有length屬性, 都可以被轉化為數組) 2.可遍歷(iterable)的對象

  1. Array.of()

將一組值轉化為數組

  1. find和findIndex

find方法,用於找出第一個符合條件的數組成員,沒有找到會返回undefiend,findIndex方法返回的是第一個符合條件成員的位置, 如果找不到返回-1, find和findIndex都可以接受第二個參數,用來綁定回調函數的this

  1. 數組實例的fill()

fill方法使用給定值,填充一個數組。用於初始化數組值,接受第二個和第三個參數,用於指定開始和結束位置

  1. 數組實例的方法entries() keys()和values()

這三個方法提供新的方法,用於遍歷數組, 都返回一個遍歷器對象,可以用for..of循環進行遍歷 keys是對鍵名的遍歷,values是對鍵值的遍歷 entries是對鍵值對的遍歷

  1. 數組實例的includes()

表示某個數組是否包含給定的值, 返回true,否則返回false

Object對象的新增方法

  1. 屬性的簡潔表示

es6允許直接寫入變量和函數,最為對象的屬性和方法 主要使用: 1.函數返回值, 2. module.exports導出 3. 屬性的setter和getter

var obj = {
 foo, // 屬性
 methods() { // 方法
 }
}

  

  1. 屬性的遍歷

es6一共5種方法可以遍歷對象的屬性

  • for..in: 循環遍歷對象自身和繼承的可枚舉變量 (不含Symbol屬性)
  • Object.keys(obj): 返回一個數組,包含對象自身所有可枚舉屬性的鍵名
  • Object.getOwnPropertyNames(obj): 返回一個數組,包含對象自身的所有屬性的鍵名
  • Object.getOwnPropertySymbols(obj): 返回一個數組,包含自身所有的symbol屬性的鍵名
  • Reflect.ownKeys(): 返回一個數組,包含對象自身的所有鍵名,不管鍵名是 Symbol 或字符串,也不管是否可枚舉
  1. super關鍵字

js中this的關鍵字總是指向函數所在的當前對象,es6新增了另一個類似的關鍵字super,指向當前對象的原型對象,super只能用在對象的方法中,而且是方法的簡寫屬性

 const proto = {
   foo: 'hello'
  }
  const obj = {
   foo: 'world',
   find() {
    return super.foo  // 訪問obj的原型屬性的foo屬性
   }
  }
 Object.setPrototypeOf(obj, proto) // 設置obj的原型為proto
 obj.find() // 'hello'

  

  1. 對象的新增方法

同值相等的算法, 用來比較兩個值嚴格相等 Object.is('foo', 'foo') // true Object.is({}, {}) // false

  • Object.assign(target, source)

對象的合並,將原對象所有的可枚舉屬性,復制到目標對象上

  • 常見用途
    • 為對象添加屬性
    class point {
       constructor (x, y) {
        Object.assign(this, {x, y})  // 將屬性x和y添加Point類的對象實例上
       }
      }
    

      

    • 為對象添加方法
     Object.assign(SomeClass.prototype, {  // 為對象原型上添加方法
      someMethod(arg1, arg2){}
      antherMethod() {}
     })
    

      

    • 克隆對象
    function clone(origin) {
       return Object.assign({}, origin)
      }
      function clone(origin) {
         let originProto = Object.getPrototypeOf(origin);
         return Object.assign(Object.create(originProto), origin);
       }
    

      

    • 合並多個對象 const merge = (target, ...sources) => Object.assign(target, ...sources)
  1. __proto__屬性,Object.setPrototypeOf() Object.getPrototypeOf()

js語言對象繼承是通過原型鏈實現的,ES6提供了更多的原型鏈方法 __proto__屬性,Object.getPrototypeOf() 獲取原型prototype屬性 Object.setPrototypeOf(obj, proto), Object.create() 設置原型屬性

  1. Object.keys() Object.Values() Object.entries()

返回對象屬性組成的數組


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM