国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

ES6新特性之解構、參數、模塊和記號用法示例

2019-11-19 16:57:00
字體:
來源:轉載
供稿:網友

本文實例講述了ES6新特性之解構、參數、模塊和記號用法。分享給大家供大家參考,具體如下:

一、解構

解構提供了一個方便的地從對象或數組中提取數據的方法,請看下面的例子:

//ES6let [x,y]=[1,2];//x=1,y=2//ES5var arr=[1,2];var x=arr[0];var y=arr[1];

使用這個語法,可以一次性給多個變量賦值。一個很好的附加用處是可以很簡單的交換變量值:

let x=1,y=2;[x,y]=[y,x];x=2 y=1

解構也可以用于對象,注意對象中必須存在的對應的鍵:

let obj={x:1,y:2};let {x,y}=obj;//a=1,b=1

或者

let {x:a,y:b}=obj;//a=1,b=2

另一個有趣的模式是模擬多個返回值:

function doSomething(){   return [1,2];}let [x.y]=doSomething();//x=1.y=2

解構可以用來為參數對象賦默認值。通過對象字面量,可以模擬命名參數:

function doSomething({y:1,z:0}){   console.log(y,z);}doSomething({y:2})

二、參數

1、默認值

在ES6中,可以定義函數的參數默認值。語法如下:

function doSomething(){   return x*y;}doSomething(5);//10doSomethinf(5,undefined);//10doSomething(5,3);//15<br><br>//ES5中給參數賦默認值<br>function doSomething(x,y){<br>y=y===undefined?2:y;<br>return x*y;<br>}

傳遞undefined或不傳參數時都會觸發參數使用默認值。

2、REST參數

前面我們已經學習了省略號操作符,剩余參數和它很類似,它同樣是使用‘...'語法,允許你把末尾的參數保存在數組中:

funtion doSomething(x,...remaining){  return x*rremaining.length;}dodSomething(5,0,0,0);//15

三、模塊

在ES6的模塊語法中,模塊設計圍繞export和import關鍵詞,現在讓我們看一個包含兩個模塊的例子:

//lib/ath.jsexport function sum(x,y){  return x+y};export var pi=3.14;//app.jsimport {sum,pi}form"lib/math.js";console.log(sum(pi,pi);

正如你所見,可以存在多個export聲明,每個都要明確的指出輸出值得類型。本例中的import聲明使用一種語法,來明確定義被導入的內容,可以使用*通配符,結合as關鍵詞給模塊提供一個本地名稱,把模塊當成一個整體導入:

//app.jsimport*as math form"lib/math.js";console.lgo(math.sum(math.pi,math.pi));

模塊系統有一個default輸出,它可以是一個函數,只需要提供一個本地名稱就可以導入這個默認值:

//lib/my-fn.jsexport default function(){  console.log('echo echo);}//app.jsimport doSomething from 'lib/my-fn,js';doSomething();

請注意import聲明是同步的,但是模塊代碼需在所有依賴加載完后才會運行

四、類

類的創建圍繞calss和constructor關鍵詞,以下是個簡短的示例:

class Vehicle{   constructor(name){     this.name=name;     this.kind=''Vehicle";   }  getName(){     return this.name;  }};//Create an instancelet myVehicle=new Vehicle('rocky');

注意類的定義不是一般的對象,因此,類的成員間沒有逗號。創建一個類的對象時,需要使用new關鍵詞,繼承一個基類時,使用extends:

class Car extends Vehicle{   constructor(name){      super(name);      this.kind='car';   }}let myCar=new Car('bumpy');myCar.getName();//'bumpy';myCar instanceof Car;//truemyCar instanceof Vehicle;//true

從衍生類中,你可以使用從任何構造函數或方法中使用super來獲取它的基類:使用super()調用父類構造函數;調用其他成員。

五、記號

記號是一個新的原生數據的類型,像Number和String一樣,你可以使用記號為對象屬性創建唯一標示或創建唯一的常量。創建方法如下:

const MY_CONSTANT=Symbol();let obj={};obj[MY_CONSTANT]=1;

注意通過記號產生的鍵值對不能通過Object.getOwnPorpertyNames()獲得,在for...in遍歷、Object.key()、JSON.stringify()中均不可見,這是與基于字符串的鍵相反的,你可以通過Object.getOenPropertySymbols()獲取一個對象的記號數組。記號與const配合很合適,因為它們都有不可改變的特性。

轉譯

現在瀏覽器對ES6的支持還不廣泛,且個瀏覽器也各不相同,可能你寫的代碼在用戶的瀏覽器中還不能完全解析,這就是我們為什么需要把代碼轉換成能在當前的任何瀏覽器中良好運行的舊版本JavaScript(ES5),這種轉換通常稱為轉譯,我們必須要這么做,知道所有我們想兼容的瀏覽器都能運行ES6為止。轉譯的方法有很多種,包括Bable、Traceur、TypeScript等。

希望本文所述對大家ECMAScript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 于田县| 潜山县| 囊谦县| 博客| 元谋县| 巴林左旗| 商河县| 巴南区| 绥芬河市| 西乌珠穆沁旗| 黎川县| 三原县| 怀远县| 射洪县| 芜湖县| 黄浦区| 北票市| 杭州市| 利辛县| 正定县| 无棣县| 武汉市| 郎溪县| 柞水县| 那坡县| 额济纳旗| 依安县| 军事| 句容市| 汉阴县| 涿鹿县| 津南区| 临安市| 铁力市| 庆元县| 安远县| 清镇市| 溆浦县| 乌拉特中旗| 鄂托克前旗| 尼玛县|