ECMAScript6輪播圖實踐知識總結(jié)
模板字符串
這是我非常喜歡的ES6的特點之一,非常直觀的反應(yīng)出變量和字符串之間的關(guān)系,在ES5中,如果我們想在字符串中添加變量,需要用如下寫法:
animate(box, 'translate(-' + itemWidth * num + 'px,0)', 1000, function () {
box.style.transitionDuration = '';
box.style.transform = 'translate(-800px,0)';
flag = true;
});
現(xiàn)在用ES6的模板字符串,可以直接把字符串和變量相結(jié)合,更加易懂。
animate(box, `translate(-${itemWidth*num}px,0)`, 1000, function() {
box.style.transitionDuration = '';
box.style.transform = `translate(-${itemWidth*(item.length-2)}px,0)`;
flag = true;
});
是不是非常直觀方便,從上面的兩個簡單示例中可以看出,在ES6中,字符串用反引號(``)標(biāo)識,這一點需要知道。
還有一個特點,模板字符串可以輸出折行的字符串,這在ES5傳統(tǒng)字符串中是無法做到的,必須借助(\n),且不能在書寫時候?qū)懭牖剀?,但是在ES6的字符串模板中,可以直接寫入回車,空格,然后在字符串輸出時候直接輸出,非常方便。
let myString=`abc de ffff fas`; console.log(myString); /*輸出abc de ffff fas*/
對函數(shù)的擴(kuò)展
1.給函數(shù)設(shè)置默認(rèn)值
在對函數(shù)的擴(kuò)展中,添加了一項給函數(shù)設(shè)置默認(rèn)值的功能,這個功能可以說是非常贊的。是否記得我們在ES5中是怎么給函數(shù)設(shè)置默認(rèn)值?
function test(a,b,c){
var a=a||10;
var a=b||15;
var c=c||20;
console.log(a+b+c);
}
這里我們設(shè)置默認(rèn)值,可以達(dá)到自己的預(yù)期效果,直到有一天,我們把a(bǔ)=0傳入,這時候,我們這么寫就不對了,對于程序來說,0就是false,所以a會取默認(rèn)值10,從而達(dá)不到我們預(yù)期的效果。但是ES6為我們提供非常好的設(shè)置默認(rèn)值的方式。上面的代碼可以改寫成下面的這樣:
function test(a=10,b=15,c=20){
console.log(a+b+c);
}
2.箭頭函數(shù)
了解Coffescript的同學(xué)應(yīng)該清楚,Cofficescript的強(qiáng)大之處在于它的無處不在的箭頭函數(shù),寫起來非常爽,現(xiàn)在,ES6正式引入箭頭函數(shù),讓我們的程序可以得到簡化,例如:
//ES5的寫法
var test = function (a,b){
return a+b;
}
//ES6的箭頭函數(shù)
var test2 = test(a,b)=>a+b;
在寫輪播時候,需要鼠標(biāo)移動到下面的這個小圓點在小圓點類數(shù)組對象中是第幾個,從而才能讓圖運動到正確位置,在ES5的時候,我們需要給當(dāng)前這個對象添加屬性,寫起來比較繁瑣,寫法如下:
var liList = document.querySelectorAll('li');
for(var i=0;i<liList.length;i++){
liList[i].index=i;
liList[i].addEventListener('mouseenter',function(){
console.log(this.index);
},false);
}
這個this.index屬性就是當(dāng)前的鼠標(biāo)放上去的元素的索引,然后根據(jù)這個索引去得到當(dāng)前的元素。但是在ES6中,我們可以直接使用箭頭函數(shù)以及在數(shù)組中新引入的findIndex來找到當(dāng)前的活動元素的索引,代碼如下:
let liList = document.querySelectorAll('li');
let ArrayliList=Array.form(liList);
for(var i=0;i<liList.length;i++){
liList[i].index=i;
liList[i].addEventListener('mouseenter',function(){
let thisIndex = ArrayliList.findIndex((n) => n == this);
},false);
}
以上代碼得到的thisIndex就是當(dāng)前鼠標(biāo)放上去的索引,這里我對箭頭函數(shù)中n這個參數(shù)的理解是,傳入?yún)?shù)n后會遍歷數(shù)組中的對象,從而找到與this相等的那個對象,然后返回它的索引,這里用到Array.from(),這是一個ES6中數(shù)組中新增的方法,可以將類數(shù)組轉(zhuǎn)換成數(shù)組。
ES6的for…of循環(huán)
上面的JS代碼循環(huán)用了for,其實可以用ES6中的for…of循環(huán)去代替,這樣寫法更加簡潔。是否記得JS中的for…in循環(huán),這個循環(huán)可以循環(huán)鍵值對中的鍵,但是無法循環(huán)值,而for…of的出現(xiàn)正是為了彌補(bǔ)它的不足,for…of循環(huán)可以使用的范圍包括數(shù)組、Set和Map結(jié)構(gòu)、某些類似數(shù)組的對象(比如arguments對象、DOM NodeList對象)、Generator對象,以及字符串。所以我們可以利用該循環(huán)替代for循環(huán),但是這里要注意一點如果直接用for…of循環(huán),在chrome49下會報錯,官方已證實這是chrome49的BUG,將會在chrome51中修復(fù),所以我在寫的時候,利用Array.from()將NodeList對象轉(zhuǎn)換為數(shù)組,這樣可以放心操作,代碼如下:
let liList = document.querySelectorAll('li');
let ArrayliList=Array.form(liList);
for(let li of liList){
li.addEventListener('mouseenter',function(){
let thisIndex = ArrayliList.findIndex((n) => n == this);
},false);
}
總結(jié)
以上就是本文的全部內(nèi)容,是不是非常簡潔,通過這篇文章感覺僅僅只是這些就已經(jīng)讓我感受到ES6的魅力了,希望對大家學(xué)習(xí)ES6能有所幫助。
相關(guān)文章
javascript設(shè)計模式 – 代理模式原理與用法實例分析
這篇文章主要介紹了javascript設(shè)計模式 – 代理模式,結(jié)合實例形式分析了javascript代理模式相關(guān)概念、原理、用法及操作注意事項,需要的朋友可以參考下2020-04-04
JavaScript實現(xiàn)拖動滑塊拼圖驗證功能(html5、canvas)
這篇文章主要介紹了JavaScript實現(xiàn)拖動滑塊拼圖驗證(html5、canvas),本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03
js使用html()或text()方法獲取設(shè)置p標(biāo)簽的顯示的值
html()方法可以用來讀取或者設(shè)置某個元素中的HTML內(nèi)容,text()方法可以用來讀取或者沒置某個元素中的文本內(nèi)容2014-08-08
JavaScript動態(tài)添加數(shù)據(jù)到表單并提交的幾種方式
這篇文章主要介紹了JavaScript動態(tài)添加數(shù)據(jù)到表單并提交,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-06-06
layui框架table 數(shù)據(jù)表格的方法級渲染詳解
今天小編就為大家分享一篇layui框架table 數(shù)據(jù)表格的方法級渲染詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08
js提交form表單,并傳遞參數(shù)的實現(xiàn)方法
下面小編就為大家?guī)硪黄猨s提交form表單,并傳遞參數(shù)的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-05-05

