this指向問題
es5中一句話可有概括誰呼叫this就指向誰(執行時生效),es6中箭頭函式中沒有this,所以es6中的this相當於乙個變數,她永遠繼承外層作用域的this(定義時生效),需要注意的物件不構成作用域,當然函式在生效時才能行車作用域。
function f(),1000)
}var obj=new f()
settimeout(()=>,3000)
settimeout(()=>,3000)
//21
//19 借鑑官網的例子
promise的鏈式呼叫
function china(),1000)})
return p;
}function jiangshu(data),2000)
})return p;
}function xian(data),2000)
})return p;
}china ().then(jiangshu).then(xian).then(function(data))
//china中國
//promise {}
//江蘇教育大省份
//盱眙縣地級市
//淮河鎮
如上**所示,promise的鏈式呼叫很好的避免的函式的**地獄問題。
陣列擴充套件運算子
作用將乙個陣列轉為用逗號分隔的引數序列。
運算var add=(a,c)=>a+c;
var arr=[1,3];
add(...arr)
//4var arr1 = [0, 1, 2];
var arr2 = [3, 4, 5];
console.log(arr1)
// [0, 1, 2, 3, 4, 5]
let arr3=[1,2,3];
let arr4=[4,5,6];
arr3.push(...arr4)
console.log(arr3)
// [1, 2, 3, 4, 5, 6]
陣列的淺拷貝
const a1 = [1, 2];
const a2 = [...a1];
將字串轉為陣列
[...'hello']
// [ "h", "e", "l", "l", "o" ]
rest引數
arguments類陣列通過array.prototype.slice.call()轉化為陣列
function f()
f(1,2,3,4)
// arguments(4) [1, 2, 3, 4, callee: ƒ, symbol(symbol.iterator): ƒ]
// [1, 2, 3, 4]
es6通過rest引數去掉arguments引數,rest直接是個陣列
const numbers = (...nums) => nums;
numbers(1, 2, 3, 4, 5)
//[1,2,3,4,5]
物件es6 引入了跟object.keys
配套的object.values
和object.entries
,作為遍歷乙個物件的補充手段,供for...of
迴圈使用。
let = object;
let obj = ;
for (let key of keys(obj))
for (let value of values(obj))
for (let [key, value] of entries(obj))
map資料結構(類似物件,值-值的對應,後續補充)
set資料結構(類似陣列,沒有重複元素)
看乙個例子,陣列去重的簡單寫法
let arr = [1,2,3,4,5,5,4,3,2,1];
let quchong= [...new set(arr)];
console.log(quchong); // [1,2,3,4,5]
[...new set('ababbc')].join('') //字串去重
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 類和之前的函式構造器...