摘要:這也是前端面試經常詢問的問題,經常問你出現了哪些新的特性,平時又使用過那些。
這也是前端面試經常詢問的問題,經常問你es6出現了哪些新的特性,平時又使用過那些。在編寫此教程的時候,第一句話往往就是面試常常問到的地方,然后后面就是他的詳細解釋,面試要求的內容我會用*標記出來。寫技術文檔是真的累啊,雖然是看別人的文檔,但是你得看很多,而且還得自己總結啊。所以說要是覺得對你有用還是幫我點個star吧https://github.com/skychenbo
1、箭頭函數需要注意的地方 2、ES6 let、const 3、set數據結構 4、promise對象的用法,手寫一個promise 5、class的理解 6、模版語法的理解 7、rest參數 8、 module體系箭頭函數需要注意的地方
*當要求動態上下文的時候,就不能夠使用箭頭函數。也就是this的固定化
1、在使用=>定義函數的時候,this的指向是定義時所在的對象,而不是使用時所在的對象
2、不能夠用作構造函數,這就是說,不能夠使用new命令,否則就會拋出一個錯誤
3、不能夠使用arguments對象
4、不能使用yield命令
這是一道當年很困惑我的一道題不知道你在第一眼能不能看出其結果,this的指向總是讓人困擾,但是有了=>以后媽媽再也不用擔心你使用this了
class Animal { constructor(){ this.type = "animal" } says(say) { setTimeout(function () { console.log(this.type + "says" + say) },1000) } } var animal = new Animal() animal.says("hi") // undefined says hi
我們再來看看=>的情況
class Animal() { constructor() { this.type = "animal" } says(say) { setTimeout(() => { console.log(this.type + " says " + say) }, 1000) } } var animal = new Animal() animal.says("hi") // animal says hi
ES6 let、const
*let是更完美的var,不是全局變量,具有塊級函數作用域,大多數情況不會發生變量提升。const定義常量值,不能夠重新賦值,如果值是一個對象,可以改變對象里邊的屬性值
let
1、let聲明的變量具有塊級作用域
2、let聲明的變量不能通過window.變量名進行訪問
3、形如for(let x..)的循環是每次迭代都為x創建新的綁定
下面是var帶來的不合理場景
var a = [] for (var i = 0; i < i; i++) { a[i] = function () { console.log(i) } } a[5]() // 10
在上述代碼中,變量i是var聲明的,在全局范圍類都有效。所以每一次循環,新的i值都會覆蓋舊值,導致最后輸出都是10
而如果對循環使用let語句的情況,那么每次迭代都是為x創建新的綁定代碼如下
var a = [] for (let i = 0; i < i; i++) { a[i] = function () { console.log(i) } } a[5]() // 5
當然除了這種方式讓數組中的各個元素分別是不同的函數,我們還可以采用閉包和立即函數兩種方法
這是閉包的方法
function showNum(i) { return function () { console.log(i) } } var a = [] for (var i = 0; i < 5; i++) { a[i] = showNum(i) }
這是立即函數的方法
var a = [] for (var i = 0; i < 5; i++) { a[i] = (function (i) { return function () { console.log(i) } })(i) } a[2]()Set數據結構
*es6方法,Set本身是一個構造函數,它類似于數組,但是成員值都是唯一的
const set = new Set([1,2,3,4,4]) [...set] // [1,2,3,4] Array.from(new Set())是將set進行去重promise對象的用法,手寫一個promise
promise是一個構造函數,下面是一個簡單實例
var promise = new Promise((resolve,reject) => { if (操作成功) { resolve(value) } else { reject(error) } }) promise.then(function (value) { // success },function (value) { // failure })Class的講解
*class語法相對原型、構造函數、繼承更接近傳統語法,它的寫法能夠讓對象原型的寫法更加清晰、面向對象編程的語法更加通俗
這是class的具體用法
class Animal { constructor () { this.type = "animal" } says(say) { console.log(this.type + "says" + say) } } let animal = new Animal() animal.says("hello") // animal says hello class Cat extends Animal { constructor() { super() this.type = "cat" } } let cat = new Cat() cat.says("hello") // cat says hello
可以看出在使用extend的時候結構輸出是cat says hello 而不是animal says hello。說明contructor內部定義的方法和屬性是實例對象自己的,不能通過extends 進行繼承。在class cat中出現了super(),這是什么呢
在ES6中,子類的構造函數必須含有super函數,super表示的是調用父類的構造函數,雖然是父類的構造函數,但是this指向的卻是cat
Object.assign 方法
var n = Object.assign(a,b,c)向n中添加a,b,c的屬性
模版語法*就是這種形式${varible},在以往的時候我們在連接字符串和變量的時候需要使用這種方式"string" + varible + "string"但是有了模版語言后我們可以使用string${varible}string這種進行連接
rest參數*es6引入rest參數,用于獲取函數的多余參數,這樣就不需要使用arguments對象了
ex:
function add(...values) { let sum = 0 for(var val of values) { sum += val } return sum }module體系
*歷史上js是沒有module體系,無法將一個大程序拆分成一些小的程序。在es6之前,有commonJs,AMD兩種
CommonJS是如何書寫的呢
const animal = require("./content.js") // content.js module.exports = "a cat"
require.js是這樣做的
// content.js
define("content.js", function () { return "A cat" }) require(["./content.js"], function (animal) { console.log(animal) // a cat })
ES6的語法(在我用的vue中,就使用的是這個)
import animal from "./content" // content.js export default "a cat"
es6 import的其他用法
在vue中可以 import animal from "./content"
animal這個值可以根據你的喜歡而改變,但是有一個問題就是如果一旦引入的是函數或者變量時,你就必須和content中的名字保持一致,可以參照
import { say, type } from "./content"
常用的還有一種寫法
import * as content from "./content"
這種寫法就是表示所有的輸出值都在這個對象上
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/88663.html
摘要:這也是前端面試經常詢問的問題,經常問你出現了哪些新的特性,平時又使用過那些。 這也是前端面試經常詢問的問題,經常問你es6出現了哪些新的特性,平時又使用過那些。在編寫此教程的時候,第一句話往往就是面試常常問到的地方,然后后面就是他的詳細解釋,面試要求的內容我會用*標記出來。寫技術文檔是真的累啊,雖然是看別人的文檔,但是你得看很多,而且還得自己總結啊。所以說要是覺得對你有用還是幫我點個s...
摘要:從現在開始,養成寫技術博客的習慣,或許可以在你的職業生涯發揮著不可忽略的作用。如果想了解更多優秀的前端資料,建議收藏下前端英文網站匯總這個網站,收錄了國外一些優質的博客及其視頻資料。 前言 寫文章是一個短期收益少,長期收益很大的一件事情,人們總是高估短期收益,低估長期收益。往往是很多人堅持不下來,特別是寫文章的初期,剛寫完文章沒有人閱讀會有一種挫敗感,影響了后期創作。 從某種意義上說,...
摘要:特意對前端學習資源做一個匯總,方便自己學習查閱參考,和好友們共同進步。 特意對前端學習資源做一個匯總,方便自己學習查閱參考,和好友們共同進步。 本以為自己收藏的站點多,可以很快搞定,沒想到一入匯總深似海。還有很多不足&遺漏的地方,歡迎補充。有錯誤的地方,還請斧正... 托管: welcome to git,歡迎交流,感謝star 有好友反應和斧正,會及時更新,平時業務工作時也會不定期更...
閱讀 2950·2021-11-23 09:51
閱讀 3776·2021-11-22 15:29
閱讀 3226·2021-10-08 10:05
閱讀 1552·2021-09-22 15:20
閱讀 952·2019-08-30 15:56
閱讀 1069·2019-08-30 15:54
閱讀 733·2019-08-26 11:54
閱讀 2636·2019-08-26 11:32