LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

[轉(zhuǎn)帖]分享ES6 常用的幾個(gè)方法

freeflydom
2023年5月25日 17:20 本文熱度 1650

1.什么是ES6 ?

ESMAscript 6.0(以下簡(jiǎn)稱ES6)是 Javascript 語(yǔ)言的下一代標(biāo)準(zhǔn),已在2015年6月正式發(fā)布。它的目標(biāo):是使Javascript語(yǔ)言可以編寫復(fù)雜且大型應(yīng)用,成為企業(yè)級(jí)開(kāi)發(fā)語(yǔ)言。ES6既是一個(gè)歷史名詞,也是一個(gè)泛指,泛指涵蓋了ES2015、ES2016、ES2017等的下一代Javascript語(yǔ)言標(biāo)準(zhǔn)。 標(biāo)準(zhǔn)委員會(huì)規(guī)定每年6月正式發(fā)布一次標(biāo)準(zhǔn),作為當(dāng)年的正式版本。

2.了解Babel轉(zhuǎn)碼器

Babel是一個(gè)廣泛使用的ES6轉(zhuǎn)碼器,可以將ES6代碼轉(zhuǎn)為ES5,從而在老版本的瀏覽器中執(zhí)行。不過(guò)現(xiàn)在的開(kāi)發(fā)當(dāng)中幾乎不會(huì)用到了;所以說(shuō):你可以使用ES6的方式編寫程序,也不用擔(dān)心現(xiàn)有的環(huán)境是否支持。

// 轉(zhuǎn)碼前

input.map(item => item + 1);


// 轉(zhuǎn)碼后

input.map(function(item){

return item + 1;

})


上面的原始代碼用了箭頭函數(shù),Babel將其轉(zhuǎn)為普通函數(shù),就能在不支持箭頭函數(shù)的 Javascript環(huán)境執(zhí)行了。目前各大技術(shù)棧(React/Vue/Angular)的腳手架項(xiàng)目都在使用babel作為默認(rèn)的語(yǔ)言標(biāo)準(zhǔn)轉(zhuǎn)碼工具,可以在.babelrc文件中進(jìn)行更多的自定義配置。

我們也可以通過(guò)官方提供的REPL在線編譯器來(lái)體驗(yàn)Babel轉(zhuǎn)碼。

3.變量的解構(gòu)賦值

ES6允許按照一定模式,從不同類型數(shù)據(jù)中提取值,然后對(duì)變量進(jìn)行賦值,并且快讀從對(duì)象或者數(shù)組里面獲取一些數(shù)據(jù),這杯稱為:解構(gòu)賦值

3.1 數(shù)組的解構(gòu)賦值

在之前;我們給變量賦值只能直接指定一個(gè)變量值

let a = 12;

let b = 11;

let c = 10;


ES6之后,就可以寫成這樣的

let [a, b, c] = [1, 2, 3];


上面的代碼表示,可以從數(shù)組中提取數(shù)值,按照對(duì)應(yīng)的位置,對(duì)變量賦值。本質(zhì)上,這種寫法屬于"匹配模式",只要等號(hào)兩邊的模式相同,左邊的變量就會(huì)被賦予對(duì)應(yīng)的值,而解構(gòu)賦值允許指定的默認(rèn)值。

3.2 對(duì)象的解構(gòu)賦值

對(duì)象的解構(gòu)與數(shù)組有一個(gè)重要的不同。數(shù)組的元素是按次序排列的,變量的取值由它的位置決定;而對(duì)象的屬性沒(méi)有次序,變量必須與屬性同名,才能取到正確的值:

語(yǔ)法let {key1, key2, ...} = {鍵值對(duì)1, 鍵值對(duì)2, ...}

 const JsonData = {

      name: "小彭",

      id: 727,

      status: "OK",

      data: [867, 5309],

      otherData1: 18,

      otherData2: ['www', 'itsource', 'cn'],

      otherData3: {

        a: 1

  }

}

console.log(JsonData.name,JsonData.id);


3.3 函數(shù)參數(shù)的解構(gòu)賦值

函數(shù)的參數(shù)也可以使用解構(gòu)賦值;并且也一樣可以使用默認(rèn)值。函數(shù)sum()的參數(shù)表面上是一個(gè)數(shù)組,但在傳入?yún)?shù)的那一刻,數(shù)組參數(shù)就被解構(gòu)成變量ab。

function sum([a,b]){

  return a + b;

}

sum([1,7]);


4.展開(kāi)運(yùn)算符

展開(kāi)運(yùn)算符也叫擴(kuò)展運(yùn)算符。

語(yǔ)法(...);

除此之外,擴(kuò)展運(yùn)算符也可以展開(kāi)數(shù)組和對(duì)象;并且可以對(duì)數(shù)組和對(duì)象進(jìn)行淺拷貝、合并的功能;也可以將偽數(shù)組轉(zhuǎn)換為真數(shù)組。

5.模板字符串

對(duì)于傳統(tǒng)的Javascript語(yǔ)言,輸出一個(gè)模板字符串通常是這樣寫的。(此次用了jQuery的方法)

$('#result').append(

'There are <b>' + basket.count + '</b> ' +

'items in your basket, ' +

'<em>' + basket.onSale +

'</em> are on sale!'

);


這種寫法相當(dāng)?shù)姆爆崳栽贓S6引入了模板字符串來(lái)解決繁瑣等的諸多問(wèn)題。

$('#result').append(`

There are <b>${basket.count}</b> items

in your basket, <em>${basket.onSale}</em>

are on sale!

`);


模板字符串是增強(qiáng)版的字符串,用反引號(hào)(``)標(biāo)識(shí)。它可以當(dāng)作普通字符串使用,也可以用來(lái)定義多行字符串,或者在字符串中嵌入變量。模板字符串,可以換行,也可以在字符串中直接輸出變量。

6.對(duì)象的簡(jiǎn)潔寫法

ES6中對(duì)象的屬性和方法都有簡(jiǎn)寫形式。 它的寫法就是如果鍵名和鍵值的屬性名是一樣時(shí),可以只寫一個(gè)。對(duì)于函數(shù)來(lái)說(shuō);可以省略冒號(hào)(:)function。

let name = "小彭";

let age = 22;

let gender = "male";


let person = {

    name,

    age,

    gender,

    // 省略 冒號(hào)(:)和function

    hobby () {

          console.log("愛(ài)好和平");

   },

    color () {

          console.log("藍(lán)色");

    }

}

console.log(person);

7.class

7.1 class的由來(lái)

ES5中如果想要寫一個(gè)類,傳統(tǒng)的寫法就是使用構(gòu)造函數(shù)。另外可以定義靜態(tài)方法。但是這種寫法跟傳統(tǒng)的面向?qū)ο笳Z(yǔ)言的差異很大,很容易讓初學(xué)者感到困惑;由此ES6提供更接近傳統(tǒng)語(yǔ)言的寫法,引入了class(類)這個(gè)概念,作為對(duì)象的模板。通過(guò)class關(guān)鍵字,可以定義類。

// 類(構(gòu)造函數(shù))

function Person(name, age){

// 定義實(shí)例屬性

   this.name = name;

   this.age = age;

}

// 添加原型方法

Person.prototype.show = function () {

       console.log("我是原型方法");

 }

// 創(chuàng)建實(shí)例對(duì)象

let per = new Person("花開(kāi)富貴", 22);

// 添加靜態(tài)方法。靜態(tài)方法是屬于類自己的,實(shí)例對(duì)象調(diào)用不了。

 Person.say = function (){

     console.log("我是靜態(tài)方法");

 }

7.2 class的寫法

ES6class可以看作是一個(gè)語(yǔ)法糖,它的絕大部分功能,ES5都可以做到,新的class寫法只是讓對(duì)象原型的寫法更加清晰、更像面向?qū)ο缶幊痰恼Z(yǔ)法而已。

class類的命名規(guī)則是大駝峰,并且class類里面有一個(gè)構(gòu)造器,等價(jià)于構(gòu)造函數(shù);如果沒(méi)有構(gòu)造器,在實(shí)例化的時(shí)候會(huì)自動(dòng)創(chuàng)建一個(gè)空的構(gòu)造器。

class Test{

// 一般固定的屬性會(huì)放在外層

  eye = 2;

  leg = 2;


constructor(name, age, gender){

    this.name = name;

    this.age = age;

    this.gender = gender;

}


    show () {

        console.log("原型方法");

}

// 靜態(tài)方法

    static () {

        console.log("靜態(tài)方法");

}

}

// 實(shí)例化對(duì)象

let obj = new Test("小彭", 22, "male");

console.log(obj);


7.3 class 繼承

使用ES6 ,class 語(yǔ)法來(lái)改寫之前寄生組合式繼承的代碼(使用extends關(guān)鍵字);其中,super是父類構(gòu)造函數(shù),ES6規(guī)定,子類構(gòu)造函數(shù)中必須執(zhí)行一次super函數(shù)。

繼承中的屬性或者方法查找原則:就近原則;先看自身有沒(méi)有這個(gè)屬性或者方法,有則用;如果沒(méi)有,則查找父類,若有,則用。

// 狗狗繼承動(dòng)物

class Animal {

//構(gòu)造器

eye = 2;

constructor(name, age){

     this.name = name;

     this.age = age;

}

        

color () {

     console.log("毛發(fā)細(xì)潤(rùn)呈白");

}


static hobby() {

     console.log("躺平");

  }

}

        

class Dog extends Animal {

    // 構(gòu)造器

    // ES6 要求,子類的構(gòu)造函數(shù)必須執(zhí)行一次super函數(shù)。

    constructor(name,age) {

        super(name,age);

   }

 }


let dogs = new Dog("富貴", 2);

console.log(dogs);


8.ES6 模塊化

什么是模塊化 ? 一個(gè) JS 文件就是一個(gè)模塊。

模塊功能主要由兩個(gè)命令構(gòu)成:importexport

  1. import命令用于導(dǎo)入其他模塊提供的功能

  2. export命令用于規(guī)定模塊的對(duì)外接口

8.1 語(yǔ)法一

導(dǎo)出/暴露:

export 要導(dǎo)出的內(nèi)容1

export 要導(dǎo)出的內(nèi)容2

export 要導(dǎo)出的內(nèi)容3

導(dǎo)入:

import{導(dǎo)入的內(nèi)容1, 導(dǎo)入的內(nèi)容2, 導(dǎo)入的內(nèi)容3,....} from '文件模塊路徑'

步驟 :

  1. 先建立文件,兩個(gè)為js,一個(gè)為HTML

  1. 將要寫或者要用的js代碼放在其中一個(gè)文件中,我是放在了index.js中。并且要在導(dǎo)出的代碼塊前面加上export

  1. index.js文件引入到另外一個(gè)js文件中,導(dǎo)入的時(shí)候路徑和文件后綴名不能省略,更不能本地打開(kāi),要通過(guò)live Serve打開(kāi)。

  1. 最后再把這個(gè)b.js文件引入到html中,但是在script標(biāo)簽類型必須是module,否則會(huì)報(bào)錯(cuò)。

8.2 語(yǔ)法二

語(yǔ)法二的引用過(guò)程和語(yǔ)法是一模一樣的。

導(dǎo)出:export default{ 要導(dǎo)出的內(nèi)容 }

導(dǎo)入:import 變量 from '文件模塊路徑'

使用export default命令是為了給模塊指定默認(rèn)的導(dǎo)出,import時(shí)可以為其任意命名(一般導(dǎo)出和導(dǎo)入的命名保持相同)。顯然,一個(gè)模塊只能有一個(gè)默認(rèn)導(dǎo)出,因此export default命令只能使用一次。所以,import命令后面才不用加大括號(hào),因?yàn)橹豢赡芪ㄒ粚?duì)應(yīng)export default命令。

8.3 ES6 模塊化的優(yōu)勢(shì)

寫法之外,相較于ES5時(shí)代的模塊化方案,ES6模塊化有著諸多優(yōu)勢(shì)。其中最主要的優(yōu)勢(shì)是「靜態(tài)加載」。ES6 模塊的設(shè)計(jì)思想是盡量的靜態(tài)化,使得編譯時(shí) 就能確定模塊的依賴關(guān)系,以及輸入和輸出的變量。CommonJSAMD模塊,都只能在運(yùn)行時(shí)確定這些東西。比如,CommonJS模塊就是對(duì)象,輸入時(shí)必須查找對(duì)象屬性。

靜態(tài)加載,也叫編譯時(shí)加載,它的好處是:

(1)編譯時(shí)就能完成模塊加載,加載效率要比運(yùn)行時(shí)高得多;

(2)使得「靜態(tài)分析」成為可能。有了它,就能進(jìn)一步拓寬 Javascript 的語(yǔ)法,比如引入「宏」和「類型檢驗(yàn)」這些只能靠靜態(tài)分析實(shí)現(xiàn)的功能。


—————————————————————————
原文鏈接:https://juejin.cn/post/7236672410626375735



該文章在 2023/5/25 17:24:34 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
久久精品国产欧美日韩亚洲 | 日韩欧美一区二区久久婷婷 | 久久精品伊人久久精品伊人 | 特级国产午夜理论不卡 | 中文字幕一区二区三区精彩视频 | 日韩精品香蕉999 |