摘要:筆記和和是塊作用域的,是聲明常量用的。一個(gè)對象如果要有可被循環(huán)調(diào)用的接口,就必須在的屬性上部署遍歷器生成方法原型鏈上的對象具有該方法也可。這種方式會訪問注冊表,其中存儲了已經(jīng)存在的一系列。這種方式與通過定義的獨(dú)立不同,注冊表中的是共享的。
ECMAScript6 筆記 let 和 const
let和const是塊作用域的 ,const是聲明常量用的。
{let a = 10;} a // ReferenceError: a is not defined.
let和const不存在變量提升
console.log(foo); // ReferenceError let foo = 2;
var tmp = 123; if (true) { tmp = "abc"; // ReferenceError let tmp; }
function bar(x = y, y = 2) { return [x, y]; } bar(); // 報(bào)錯(cuò)
const 不可變的只是引用的地址
const foo = {}; foo.prop = 123; foo.prop// 123 foo = {} // TypeError: "foo" is read-only不起作用
如果真的想將對象凍結(jié),應(yīng)該使用Object.freeze方法。
const foo = Object.freeze({}); foo.prop = 123; // 不起作用class
class Point { constructor(x, y) { this.x = x; this.y = y; } static classMethod() { console.log("fathor jt:hello"); } } class ColorPoint extends Point { //mix(Cons1,Cons2) constructor(x, y, color) { super(x, y); this.color = color; // 正確 } //原型方法 ptMethod(){ console.log("pt:hello"); } static classMethod() { //靜態(tài)方法也是可以從super對象上調(diào)用 super.classMethod(); console.log("jt:hello"); } get prop() { return "getter"; } set prop(value) { console.log("setter: "+value); } }Iterator和for...of循環(huán)
Iterator的作用有三個(gè):一是為各種數(shù)據(jù)結(jié)構(gòu),提供一個(gè)統(tǒng)一的、簡便的訪問接口;二是使得數(shù)據(jù)結(jié)構(gòu)的成員能夠按某種次序排列;三是ES6創(chuàng)造了一種新的遍歷命令for...of循環(huán),Iterator接口主要供for...of消費(fèi)。
let arr = ["a", "b"]; let iter = arr[Symbol.iterator](); iter.next() //{ value: "a", done: false } iter.next() //{ value: "b", done: false } iter.next() //{ value: undefined, done: true }
上面代碼中,變量arr是一個(gè)數(shù)組,原生就具有遍歷器接口,部署在arr的Symbol.iterator屬性上面。所以,調(diào)用這個(gè)屬性,就得到遍歷器對象。
一個(gè)對象如果要有可被for...of循環(huán)調(diào)用的Iterator接口,就必須在Symbol.iterator的屬性上部署遍歷器生成方法(原型鏈上的對象具有該方法也可)。
class RangeIterator { constructor(start, stop) { this.value = start; this.stop = stop; } [Symbol.iterator]() { return this; } next() { var value = this.value; if (value < this.stop) { this.value++; return {done: false, value: value}; } else { return {done: true, value: undefined}; } } } for (var value of new RangeIterator(0, 3)) { console.log(value); }Symbol
ES6引入了一種新的原始數(shù)據(jù)類型Symbol,表示獨(dú)一無二的值。它是JavaScript語言的第七種數(shù)據(jù)類型,前六種是:Undefined、Null、布爾值(Boolean)、字符串(String)、數(shù)值(Number)、對象(Object)。
symbol鍵的設(shè)計(jì)初衷是避免初衷,因此JavaScript中最常見的對象檢查的特性會忽略symbol鍵。例如,for-in循環(huán)只會遍歷對象的字符串鍵,symbol鍵直接跳過,Object.keys(obj)和Object.getOwnPropertyNames(obj)也是一樣。但是symbols也不完全是私有的:用新的API Object.getOwnPropertySymbols(obj)就可以列出對象的symbol鍵。另一個(gè)新的API,Reflect.ownKeys(obj),會同時(shí)返回字符串鍵和symbol鍵。(我們將在隨后的文章中講解Reflect(反射) API)
獲取symbol的三種方法調(diào)用Symbol()。這種方式每次調(diào)用都會返回一個(gè)新的唯一symbol。
調(diào)用Symbol.for(string)。這種方式會訪問symbol注冊表,其中存儲了已經(jīng)存在的一系列symbol。這種方式與通過Symbol()定義的獨(dú)立symbol不同,symbol注冊表中的symbol是共享的。如果你連續(xù)三十次調(diào)用Symbol.for("cat"),每次都會返回相同的symbol。注冊表非常有用,在多個(gè)web頁面或同一個(gè)web頁面的多個(gè)模塊中經(jīng)常需要共享一個(gè)symbol。
使用標(biāo)準(zhǔn)定義的symbol,例如:Symbol.iterator
var s1 = Symbol(); var s2 = Symbol(); s1 === s2 // false
var mySymbol = Symbol(); var a = { [mySymbol]: "Hello!" };promie 生成器 Generators 集合 箭頭函數(shù)
箭頭函數(shù)提供了更簡潔的語法,并且箭頭函數(shù)中 this 對象的指向是不變的,this 對象綁定定義時(shí)所在的對象
// bad "use strict"; var fn = function fn(v) { return console.log(v); }; // good var fn= (v=>console.log(v));Module Babel下的ES6兼容性與規(guī)范
http://imweb.io/topic/561f9352883ae3ed25e400f5?utm_source=tuicool&utm_medium=referral
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/86190.html
摘要:就是一個(gè)用于搭建類似于網(wǎng)頁版知乎這種表單項(xiàng)繁多,且內(nèi)容需要根據(jù)用戶的操作進(jìn)行修改的網(wǎng)頁版應(yīng)用。單頁應(yīng)用程序顧名思義,單頁應(yīng)用一般指的就是一個(gè)頁面就是應(yīng)用,當(dāng)然也可以是一個(gè)子應(yīng)用,比如說知乎的一個(gè)頁面就可以視為一個(gè)子應(yīng)用。 最近在逛各大網(wǎng)站,論壇,以及像SegmentFault等編程問答社區(qū),發(fā)現(xiàn)Vue.js異常火爆,重復(fù)性的提問和內(nèi)容也很多,樓主自己也趁著這個(gè)大前端的熱潮,著手學(xué)習(xí)了一...
摘要:原文地址一個(gè)非常適合入門學(xué)習(xí)的博客項(xiàng)目前端掘金一個(gè)非常適合入門學(xué)習(xí)的項(xiàng)目,代碼清晰結(jié)構(gòu)合理新聞前端掘金介紹一個(gè)由編寫的新聞。深入淺出讀書筆記知乎專欄前端專欄前端掘金去年的一篇老文章,恰好今天專欄開通,遷移過來。 破解前端面試(80% 應(yīng)聘者不及格系列):從閉包說起 - 掘金修訂說明:發(fā)布《80% 應(yīng)聘者都不及格的 JS 面試題》之后,全網(wǎng)閱讀量超過 6W,在知乎、掘金、cnodejs ...
摘要:原文地址一個(gè)非常適合入門學(xué)習(xí)的博客項(xiàng)目前端掘金一個(gè)非常適合入門學(xué)習(xí)的項(xiàng)目,代碼清晰結(jié)構(gòu)合理新聞前端掘金介紹一個(gè)由編寫的新聞。深入淺出讀書筆記知乎專欄前端專欄前端掘金去年的一篇老文章,恰好今天專欄開通,遷移過來。 破解前端面試(80% 應(yīng)聘者不及格系列):從閉包說起 - 掘金修訂說明:發(fā)布《80% 應(yīng)聘者都不及格的 JS 面試題》之后,全網(wǎng)閱讀量超過 6W,在知乎、掘金、cnodejs ...
摘要:入門一前言由于最近本人在學(xué)習(xí),做一些筆記能夠更好的熟悉,就趁此機(jī)會來寫一篇關(guān)于的新人學(xué)習(xí)摘要吧。的作用域與命令相同只在聲明所在的塊級作用域內(nèi)有效。塊級作用域新增方式和實(shí)際上為新增了塊級作用域。同時(shí),函數(shù)聲明還會提升到所在的塊級作用域的頭部。 ECMAScript6/ES6 入門 一、前言 由于最近本人在學(xué)習(xí)ES6,做一些筆記能夠更好的熟悉,就趁此機(jī)會來寫一篇關(guān)于ES6的新人學(xué)習(xí)摘要吧。...
摘要:對象的解構(gòu)賦值函數(shù)執(zhí)行后,返回的是一個(gè)對象。分別取出對象中屬性為和的值,根據(jù)解構(gòu)賦值的規(guī)則,在左側(cè)聲明變量,放在大括號中,變量名要和屬性名保持一致。箭頭函數(shù)在中,箭頭函數(shù)就是函數(shù)的一種簡寫形式允許使用箭頭定義函數(shù)。 原文博客地址,歡迎學(xué)習(xí)交流:點(diǎn)擊預(yù)覽 聲明變量 可以使用let、const關(guān)鍵字聲明變量,而不推薦使用var聲明變量 var聲明變量的問題: 可以多次重復(fù)聲明同一個(gè)變量...
閱讀 915·2019-08-30 15:54
閱讀 1479·2019-08-30 15:54
閱讀 2407·2019-08-29 16:25
閱讀 1301·2019-08-29 15:24
閱讀 755·2019-08-29 12:11
閱讀 2513·2019-08-26 10:43
閱讀 1236·2019-08-26 10:40
閱讀 474·2019-08-23 16:24