解構:es6允許按照一定模式,從陣列和物件中提取值,對變數進行賦值。
物件的解構與陣列有乙個重要的不同。陣列的元素是按次序排列的,變數的取值由他的位置決定;而物件的屬性沒有次序,變數必須與屬性同名,才能取到正確的值。
變數解構賦值的用途:交換變數的值,從函式返回多個值,函式引數的定義,提取json資料,函式引數的預設值,遍歷map解構,輸入模組的指定方法。
es5中的資料結構,主要是用array和object。在es6中主要新增了set和map資料結構。
能使用map的優先使用,不使用陣列,考慮資料的唯一性,考慮使用set,不使用object。
symbol:功能類似於一種標識唯一性的id。通常情況下,我們可以通過呼叫symbol()函式來建立乙個symbol例項。每個symbol例項都是唯一的。當你比較兩個symbol例項的時候,將會返回false。
symbol的用途:使用symbol來作為物件屬性名,使用symbol來定義常量,使用symbol來定義類的私有屬性和方法。
註冊和獲取全域性symbol
通常情況下,我們在乙個瀏覽器視窗中,使用symbol()函式定義和symbol例項就足夠了。但是,如果你的應用涉及到多個window(最典型的就是頁面中使用iframe),並需要這些window中使用的某些symbol是同乙個,那就不能使用symbol()函式了,因為用它在不同window中建立的symbol例項總是唯一的,而我們需要的是在所有這些window環境下保持乙個共享的symbol。這種情況下,我們就需要使用另乙個api來建立或獲取symbol,那就是symbol.for(),它可以註冊或獲取乙個window間全域性的symbol例項;
參考**:
去除陣列的重複成員:[...new set(array)]
去除字串裡面的重複字元:[...new set('ababbc')].join('')
array.from可以將set結構轉為陣列:const items = new set([1, 2, 3, 4, 5]); const array = array.from(items);
這就提供了去除陣列重複成員的另一種方法。 function dedupe(array) dedupe([1, 1, 2, 3]) // [1, 2, 3]
set.prototype.keys():返回鍵名的遍歷器
set.prototype.values():返回鍵值的遍歷器
set.prototype.entries():返回鍵值對的遍歷器
set.prototype.foreach():使用**函式遍歷每個成員
物件的擴充套件運算子:用於取出引數物件中的所有可遍歷屬性,拷貝到當前物件之中。
如果擴充套件運算子用於陣列賦值,只能放在引數的最後一位,否則會報錯。
擴充套件運算子還可以將字串轉為真正的陣列,
[...'hello'] // [ "h", "e", "l", "l", "o" ]
任何iterator介面的物件,都可以用擴充套件運算子轉為真正的陣列。
擴充套件運算子(spread)是三個點(…)。它好比rest引數的逆運算,將乙個陣列轉為用逗號分隔的引數序列。
擴充套件運算子的應用:
1:合併陣列2:與解構賦值結合使用
前端筆記二
type控制input標籤的屬性,以下都是type控制的屬性 文字框 text name 名字 控制項名字 size 數字 控制項的長度 文字框的長度 單位不是畫素 px maxlength 數字 最長字元數 輸入框最多輸入的字數 value 內容字 文字框裡面的初始字 placeholder 內容...
前端學習筆記 二
rel stylesheet href 1.css display inline display block display inline block 預設樣式 標籤選擇器 類選擇器 id選擇器 行內樣式 important01 10100 1000 1000以上a link a link 鏈結預設...
前端筆記(CSS二)
1 emmet 語法 emmet語法的前身是zen coding,它使用縮排,來提高html css的編寫速度,vscode內部已經整合該語法。1 快速生成html結構語法 2 快速生成css樣式語法 1.1快速生成html結構語法 1 生成標籤直接輸入標籤名 按tab鍵即可 比如 div 然後ta...