es6特性整理

es6相較之前es5,增加了許多新的特性,提高了javascript體驗(yàn),我在es6學(xué)習(xí)和使用的過程中進(jìn)行了紀(jì)錄。

  1. 箭頭函數(shù)
    箭頭函數(shù)簡化了函數(shù)的書寫方法,變的非常簡潔,還能解決this指向問題。示例如下:
//es5寫法:
var item = data.map( function ( item, i ){
      return item;
    })
//使用箭頭函數(shù)
var item = data.map( (item,i) => {
      return item
    })
  1. let 和 const
    用于量的定義,let定義的量限定塊級作用域,超出該作用域就無法讀取到,并且同作用域內(nèi)let聲明的變量不能重復(fù);而const用于定義常量,無法改變它的值,示例如下:
for( let i=0;i<5;i++) {} console.log(i)  //i is not defined 
const DURATION = 3*1000; 
DURATION = 6*1000;  //Assignment to constant variable.

  1. es6引入了class關(guān)鍵字,它其實(shí)說js原型模式的包裝,有了類的概念后,js的對象創(chuàng)建、繼承、實(shí)例化、構(gòu)造函數(shù)等就變得更加直觀易懂。示例如下:
//首先定義一個(gè)類
class Fruit {
    constructor( name ){
        this.name = name;
   }
   getName(){
       console.log(this.name)
   }
}
//創(chuàng)建子類繼承上面的類
class Banana extends Fruit{
   constructor(name){
      super(name);
   }
   testFunc(){
      console.log('who is my father');
   }
}
//測試
var fruit =  new Fruit('fruit');
var banana = new Banana('banana');
fruit.getName();  //fruit
banana.getName(); // banana
banana.testFunc();  // who is my father
  1. 模板字符串
    模板字符串相比起傳統(tǒng)字符串與變量混合寫法要簡潔易懂的多,它使用反引號`來創(chuàng)建字符串,而里面的變量可以用${變量}來表示,示例如下:
//es5寫法
var dom = '<div>hello,'+username+'</div>';
//es6語法
var dom = `<div>hello, ${username}</div>`;
  1. for...of 循環(huán)
    for...of循環(huán)是es6新引進(jìn)的循環(huán)功能,它每次循環(huán)提供的是不同索引的值,示例如下:
var arr = [12,13,14,15,23];
for (i of arr){
   console.log(i);  //依次輸出:12, 13, 14, 15, 23
}
  1. 默認(rèn)參數(shù)
    es6中定義函數(shù)時(shí)可以給參數(shù)設(shè)置默認(rèn)值,示例如下:
//es5寫法
function getName(name){
  var myName = name || 'rose';
  console.log('my name is'+myName);
}
//es6
function getName(name='rose'){
  console.log(`my name is ${name}`);
}
  1. 拓展運(yùn)算符
    擴(kuò)展運(yùn)算符是三個(gè)點(diǎn)(...)。它好比 rest 參數(shù)的逆運(yùn)算,將一個(gè)數(shù)組轉(zhuǎn)為用逗號分隔的參數(shù)序列,由于擴(kuò)展運(yùn)算符可以展開數(shù)組,所以不再需要apply方法,將數(shù)組轉(zhuǎn)為函數(shù)的參數(shù)了。示例如下:
// es5的寫法
function count(x, y, z) {
  console.log(x,y,z);
}
var arr = [0, 1, 2];
f.apply(null, arr);
// es6的寫法
function count(x, y, z) {
  console.log(x,y,z);
}
var arr = [0, 1, 2];
count(...arr);
  1. 對象字面量
    es6可以在對象字面量里定義原型,可以不用function關(guān)鍵字來定義方法,也可以直接調(diào)用父類方法,示例如下:
var meat = {
  cook(){
    console.log('cook meat');
  }
};
var human = {
  _proto_:meat,  //指定該對象原型為meat,繼承了meat
  fruit(){
    console.log('I like fruit');
  }
};
meat.cook(); // cook meat
human.cook(); // cook meat
  1. Promise對象
    Promise是異步編程的一種解決方案,創(chuàng)建了Promise對象就可以將異步操作以同步操作的流程表達(dá)出來,避免了層層嵌套的回調(diào)函數(shù)。此外,Promise對象提供統(tǒng)一的接口,使得控制異步操作更加容易,示例如下:
var promise = new Promise((resolve, reject)=>{
  if(/*if success*/){
    resolve('it completed');
  }else{
    reject(Error('it failed));
  }
});
//綁定處理程序
promise.then(function(result){
  console.log(result); // 程序成功后會運(yùn)行此處:it completed
},function(err){
  console.log(err);  //程序失敗會運(yùn)行此處:it failed
}

es6 的新特性/語法遠(yuǎn)不止上述總結(jié)的這些,具體中文文檔請參考:http://es6.ruanyifeng.com/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容