亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

ECMAScript6輪播圖實踐知識總結(jié)

 更新時間:2016年08月17日 17:26:16   投稿:daisy  
最近萌生了用ECMAScript6寫一個輪播圖的想法,以前就知道ECMAScript6,但是一直沒有學,現(xiàn)在終于下決心學了,本篇文章會總結(jié)在實踐中用到的ES6的知識。

模板字符串

這是我非常喜歡的ES6的特點之一,非常直觀的反應出變量和字符串之間的關(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中,字符串用反引號(``)標識,這一點需要知道。

還有一個特點,模板字符串可以輸出折行的字符串,這在ES5傳統(tǒng)字符串中是無法做到的,必須借助(\n),且不能在書寫時候?qū)懭牖剀?,但是在ES6的字符串模板中,可以直接寫入回車,空格,然后在字符串輸出時候直接輸出,非常方便。

let myString=`abc
de
ffff 
fas`;
console.log(myString);
/*輸出abc
de
ffff 
fas*/

對函數(shù)的擴展

1.給函數(shù)設(shè)置默認值

在對函數(shù)的擴展中,添加了一項給函數(shù)設(shè)置默認值的功能,這個功能可以說是非常贊的。是否記得我們在ES5中是怎么給函數(shù)設(shè)置默認值?

function test(a,b,c){
  var a=a||10;
  var a=b||15;
  var c=c||20;
  console.log(a+b+c);
}

這里我們設(shè)置默認值,可以達到自己的預期效果,直到有一天,我們把a=0傳入,這時候,我們這么寫就不對了,對于程序來說,0就是false,所以a會取默認值10,從而達不到我們預期的效果。但是ES6為我們提供非常好的設(shè)置默認值的方式。上面的代碼可以改寫成下面的這樣:

function test(a=10,b=15,c=20){
  console.log(a+b+c);
}

2.箭頭函數(shù)

了解Coffescript的同學應該清楚,Cofficescript的強大之處在于它的無處不在的箭頭函數(shù),寫起來非常爽,現(xiàn)在,ES6正式引入箭頭函數(shù),讓我們的程序可以得到簡化,例如:

//ES5的寫法
var test = function (a,b){
  return a+b;
}
//ES6的箭頭函數(shù)
var test2 = test(a,b)=>a+b;

在寫輪播時候,需要鼠標移動到下面的這個小圓點在小圓點類數(shù)組對象中是第幾個,從而才能讓圖運動到正確位置,在ES5的時候,我們需要給當前這個對象添加屬性,寫起來比較繁瑣,寫法如下:

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屬性就是當前的鼠標放上去的元素的索引,然后根據(jù)這個索引去得到當前的元素。但是在ES6中,我們可以直接使用箭頭函數(shù)以及在數(shù)組中新引入的findIndex來找到當前的活動元素的索引,代碼如下:

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就是當前鼠標放上去的索引,這里我對箭頭函數(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)正是為了彌補它的不足,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中修復,所以我在寫的時候,利用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的魅力了,希望對大家學習ES6能有所幫助。

相關(guān)文章

  • ImageZoom 圖片放大鏡效果(多功能擴展篇)

    ImageZoom 圖片放大鏡效果(多功能擴展篇)

    上一篇ImageZoom已經(jīng)對圖片放大效果做了詳細的分析,這次在ImageZoom的基礎(chǔ)上進行擴展,實現(xiàn)更多的效果。
    2010-04-04
  • 基于Bootstrap使用jQuery實現(xiàn)輸入框組input-group的添加與刪除

    基于Bootstrap使用jQuery實現(xiàn)輸入框組input-group的添加與刪除

    這篇文章主要介紹了基于Bootstrap使用jQuery實現(xiàn)輸入框組input-group的添加與刪除的相關(guān)資料,需要的朋友可以參考下
    2016-05-05
  • typescript中正則表達式的常用使用方法

    typescript中正則表達式的常用使用方法

    這篇文章主要給大家介紹了關(guān)于typescript中正則表達式的常用使用方法,TypeScript是一種靜態(tài)類型的JavaScript超集,它提供了對正則表達式的全面支持,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-11-11
  • 修改發(fā)貼的編輯功能

    修改發(fā)貼的編輯功能

    修改發(fā)貼的編輯功能...
    2007-03-03
  • js獲取鍵盤按鍵響應事件(兼容各瀏覽器)

    js獲取鍵盤按鍵響應事件(兼容各瀏覽器)

    js獲取鍵盤按鍵響應事件(兼容各瀏覽器),需要的朋友可以參考一下
    2013-05-05
  • 微信小程序 wx:for 與 wx:for-items 與 wx:key的正確用法

    微信小程序 wx:for 與 wx:for-items 與 wx:key的正確用法

    這篇文章主要介紹了微信小程序 wx:for 與 wx:for-items 與 wx:key的正確用法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • js給圖片打馬賽克的方法示例

    js給圖片打馬賽克的方法示例

    有時候你發(fā)出去的圖片局部不想別別人看見,那么最簡單的辦法就是在你想要處理的地方打上馬賽克,這篇文章主要介紹了js給圖片打馬賽克的方法示例,感興趣的可以了解一下
    2021-05-05
  • JavaScript中?.?和??分別是什么詳解

    JavaScript中?.?和??分別是什么詳解

    在項目中我們往往要做很多很多的空值判斷進行容錯處理,往往伴隨著三目運算、與或、if else來使用,下面這篇文章主要給大家介紹了關(guān)于JavaScript中?.?和??分別是什么的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • 淺談ES6 模板字符串的具體使用方法

    淺談ES6 模板字符串的具體使用方法

    本篇文章主要介紹了淺談ES6 模板字符串的具體使用方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • 微信小程序使用npm包的方法步驟

    微信小程序使用npm包的方法步驟

    這篇文章主要介紹了微信小程序使用npm包的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08

最新評論