ES6學習總結 六

2021-10-01 01:24:32 字數 1502 閱讀 4379

在運用react、vue等流行框架到時候,我們發現每個**塊都是分離的,每個js檔案中定義的內容都只在本區域有作用。這就是es6引入的模組化的概念,在此之前,乙個應用的每個js檔案所定義的所有內容都由全域性作用域共享。

模組與指令碼的不同

模組的載入方式是與js原先指令碼載入方式有所區別的

1、模組**自動執行在嚴格模式下,並且沒有辦法跳出嚴格模式

2、在模組的頂級作用域建立的變數,不會被新增到共享的全域性作用域

3、模組頂級作用域的this值為undefined

4、模組不允許在**中使用html風格的注釋

5、對於模組外的**需要訪問的**,模組必須匯出它們

6、允許模組從其它模組匯入內容

模組中的關鍵字

export關鍵字可以將需要匯出的**部分公開給其他模組

import關鍵字可以訪問已被匯出的**部分

as 關鍵字可以在匯入模組指定新名稱

default關鍵字可以設定模組中的乙個預設匯出(唯一)

// 匯出模組 example.js

export const name = "地瓜"

export const age = "24"

export default function sum(num1, num2)

// 匯入模組

import sum, from "./example.js"

// 需要注意預設值不能用花括號包裹除非下列寫法

// import sum, from "./example"

console.log(person, age) // "地瓜", "24"

console.log(sum(1,2)) // 3

**的概念是我們可以通過建立乙個**物件來替代另乙個物件,並且能攔截這個物件底層操作,包括set、get、has等行為,這個攔截並響應的函式稱為陷阱。

es6中引入了乙個proxy構造器來建立乙個**,需要傳入兩個引數。目標物件和乙個定義了乙個或多個陷阱函式的處理器。

reflect物件

reflect物件代表的是反射介面,也就是上述提到陷阱函式的乙個集合。

舉乙個栗子

let person =

let proxy =

newproxy

(person,)}

return reflect.

set(traptarget, key, value, receiver)}}

)proxy.count =1;

console.

log(proxy.count)

// 1

console.

log(person.count)

// 1 **物件的行為反射到了源物件

proxy.another =

"xiaoxiao"

// 報錯

es6學習總結

一 let和const 1.let宣告的變數只在它所在的 塊有效。2.let宣告的變數僅在塊級作用域內有效。3.不存在變數提公升。4.每個let宣告的變數都有各自的作用域。它所宣告的變數一定要在宣告後使用,否則報錯 5.暫時性死區 只要塊級作用域內存在let命令,它所宣告的變數就 繫結 bindin...

ES6學習總結

1.建立 let x newset 2.特性 對基本資料型別,會自動去重 3.方法 x.add 新增 x.delete 刪除 x.has 刪除是否存在,返回布林 x.clear 清空 x.keys 返回鍵名的遍歷器 x.values 返回鍵值的遍歷器 x.foreach function 遍歷 ar...

ES6學習總結 四

與大多數物件導向語言不同,js建立之初不支援類,在es1 es5很多庫建立了一些工具來讓js顯得好像支援類 直到es6正式引入類。es6類的宣告是以class關鍵字開始後面緊跟類名,類宣告中有constructor方法可以直接定義乙個構造器。例class personclass 類和之前的函式構造器...