這是一篇專門介紹es6特性的文章,文章寫的非常棒,全文通過代碼示例像我們展示了es6的特性,雖然全英文但是用的都是很基礎的單詞,即使因為不怎么好的同學依然能看懂,我這里將其翻譯過來有2個目的,1是加深自己的記憶,2是做個備份。我這里翻譯是按照我理解的進行翻譯,并非"直譯"。如有不當之處歡迎指正。
箭頭函數// jquery中 $(".class").bind("click",e=>{ console.log(e); }) $.ajax({ url:"/api/**/*", type:"POST", data:{ }, success:(data, textStatus,jqXHR)=>{ // response data }, error:err=>{ // http error }, comp }) // 在react中 export default ()=>(這是一個最簡單的組件); export default ()=>{ returnhello}
const persion = { name:"小明", arrowGetName:()=>this.name, regularGetName:function(){ return this.name }, arrowThis:()=>this, regularThis:function(){ return this; } } // 執行結果, persion.name; // 輸出:"小明" persion.arrowGetName(); // 拋出異常,"Cannot read property "name" of undefined" persion.regularGetName(); // 輸出:"小明" persion.arrowThis(); // 輸出:undefined persion.regularThis(); // 輸出:persion對象 // 說明:如果基于執行上下文是window,那么輸出結果會有不同
const getName = function(){ let name = "getName func"; setTimeout(()=>{ console.log(this.name); },1000) } // 執行結果 getName(); //1s delay "getName func"classess
在其他語言中class的概念非常明確,特別是那些面向對象的編程語言中,例如:java;在javascript中class只是基于原型集成的一個高級語法糖,也就是說語法經過編譯之后,是通過prototype實現的。
實踐使用class Persion { static version=13 static getVersion(){ return this.version; } constructor(name,age){ this.name = name; this.age = age; this.level = 0; } updateLevel(newLevel){ this.level = newLevel; } } class Student extends Persion { constructor(name,age){ super(name,age); } get levelT(){ return `${this.level}:from XiaoMing` } set levelUpdate(level){ this.level =level; } updateLevel(newLevel){ super.updateLevel(newLevel); } } const tom = new Student("hello"); console.log(tom.level); // 0 console.log(tom.levelT); // 0:from XiaoMing tom.levelUpdate = 2; console.log(tom.levelT); // 2:from XiaoMing tom.updateLevel(3); console.log(tom.levelT); // 3:from XiaoMing增強的對象字面量
const customProtoObj = { toString:function(){ return "the customProtoObj To string" } } const handler = ()=>"handler"; const obj = { // 直接指定重定義原型鏈 __proto__:customProtoObj, // 屬性賦值的簡約寫法 handler, // 重定義 對象的toString 方法 toString(){ return `d:${super.toString()}`; }, // 動態屬性名稱,這是最大的特性了 ["prop_"+(()=>42)()]:42, } console.log(obj.handler) console.log(obj.handler()) console.log(obj.toString()) console.log(obj.prop_42)
這個特性非常給力,特別是動態屬性,在實踐開發中真的是屢試不爽
字符串插值表達式,或者叫做字符串模版// 以前的字符串拼接只能通過加號 完成 let str = "hello"; let str1 = "world" let strEnd = "end"+str+str1; // 使用該特性進行重構 let strEndEs6 = `end${str}${str1}`; // 函數調用 const getStr = ()=>`from getStr func:${str}`; let strEndFun = `from func ${getStr()}`數據解構
這是一個超強的特性,讓我們前端處理后端接口數據的時候游刃有余(特別是遇到,那種后端 <..>)
// 1.數組解構 let [a,,b] = [1,2,3]; console.log(a,b);// 1,3 // 2. 對象解構 const data = ()={name:"tom",age:18}; let {name:a,age} = data(); console.log(a,age);// "tom",18 // 這種對象的解構,如果你用過當前流行的幾個框架:react、vue、ng2,這種解構隨處可見 import {render} from "react-dom"; // 這里的render就是解構出來的 // 3. 在形參中使用 function update({name:x}){ console.log(x); } function update2({name}){ console.log(name) } update({name:"tom"}); // "tom’ update2({name:"tom2"}); // "tom2"設置默認值
// 1.形參默認值 function f(x, y=12) { return x + y; } console.log(f(3)) // 2.對象默認值 const p = {name:"123",age:18}; let {name,age,level=123} = p; console.log(level); // 123... 語法糖(可以翻譯為數據傳播)
// 1. 形參中使用 function f(x,y,z){ return x+y+z; } let params = [1,2,3]; f(...params); //他還把數組的每個元素作為參數傳遞過去 // 上面的通過es5的方式編寫如下 f.apply(undefined, [1, 2, 3, 4]); // 2. 數組中使用 const arr1 = [1,2,"h"]; const arr2 = [2,3,...arr1,4,5]; // 上面通過es5的方式 arr2 = [2,3].concat(arr1,[4,5]); // 3. 在對象字面量中使用 let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 }; console.log(x); // 1 console.log(y); // 2 console.log(z); // { a: 3, b: 4 } // Spread properties let n = { x, y, ...z }; console.log(n); // { x: 1, y: 2, a: 3, b: 4 } console.log(obj)Rest形參
這個特性讓我們可以不去現在形參的個數,使我們在編寫功能的時候更加靈活,代碼的擴展性也增強很多
function demo(part1, ...part2) { return {part1, part2} } console.log(demo(1,2,3,4,5,6))
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/90556.html
摘要:字面上是生成器的意思,在里是迭代器生成器,用于生成一個迭代器對象。當執行的時候,并不執行函數體,而是返回一個迭代器。迭代器具有方法,每次調用方法,函數就執行到語句的地方。也有觀點極力反對,認為隱藏了本身原型鏈的語言特性,使其更難理解。 本文為 ES6 系列的第一篇。旨在給新同學一些指引,帶大家走近 ES6 新特性。簡要介紹: 什么是 ES6 它有哪些明星特性 它可以運行在哪些環境 ...
摘要:原因中,定義的變量沒有塊級作用域,在第一個中循環后已經是,里面的執行的時候彈出的就是。 ES6特性介紹(上) ECMAScript(簡稱ECMA、ES),ES6也被稱為ECMAScript 2015JavaScript是ECMAScript的一種,但是目前實現ECMAScript標準的僅JavaScript ES6新的標準,新的語法特征:1、變量/賦值2、函數3、數組/json4、字符...
摘要:示例運行函數彈出彈出函數接收參數,返回值。其中,返回一個對象,是的返回值,代表函數是否執行完成。 ES6特性介紹(下) ES6新的標準,新的語法特征:1、變量/賦值2、函數3、數組/json4、字符串5、面向對象6、Promise7、generator8、ES7:async/await 《【Web全棧課程二】ES6特性介紹(上)》見:https://segmentfault.com/a...
摘要:年月,的創造者公司,決定將提交給國際標準化組織,希望這種語言能夠成為國際標準。這表示外層代碼塊不受內層代碼塊的影響。也可以運用于函數及其他文中就簡單介紹這么多,想更加了解新特性的可以自尋查看一下阮一峰的一本入門 ES6新特性 最近在項目中遇到了很多ES6的語法,遇到了不少坑坑洼洼,因此,在這里就簡單介紹一下ES6中的一些新特性 如果想真正的了解ES6和ES5有什么不同,這里推薦看一下...
摘要:的翻譯文檔由的維護很多人說,阮老師已經有一本關于的書了入門,覺得看看這本書就足夠了。前端的異步解決方案之和異步編程模式在前端開發過程中,顯得越來越重要。為了讓編程更美好,我們就需要引入來降低異步編程的復雜性。 JavaScript Promise 迷你書(中文版) 超詳細介紹promise的gitbook,看完再不會promise...... 本書的目的是以目前還在制定中的ECMASc...
閱讀 1639·2021-10-14 09:43
閱讀 5577·2021-09-07 10:21
閱讀 1292·2019-08-30 15:56
閱讀 2139·2019-08-30 15:53
閱讀 1245·2019-08-30 15:44
閱讀 2022·2019-08-30 15:44
閱讀 1334·2019-08-29 17:24
閱讀 764·2019-08-29 15:19