亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > WEB開發 > 正文

Understanding ES6學習筆記

2024-04-27 15:07:53
字體:
來源:轉載
供稿:網友
Chapter 1let: 1.不能進行變量提升,所以變量一定要在聲明后使用。2.只在let所在的塊內起作用。3.let不允許在相同作用域內,重復聲明同一個變量。在不同的作用域則可以。4.ES5只有全局作用域和函數作用域,可能造成一些問題,如內層變量覆蓋外層變量、for循環用來計數的循環變量泄露為全局變量等。let實際上為javaScript新增了塊級作用域。const:1.一經定義,不得改變,也不能進行變量提升,在聲明的時候一定要進行初始化,否則會報錯。2.也是在塊內起作用3.若const儲存的是一個地址,這個地址指向一個對象。不可變的只是這個地址,即不能把它指向另一個地址,但對象本身是可變的,所以依然可以為其添加新屬性。暫時性死區:

如果區塊中存在let和const命令,這個區塊對這些命令聲明的變量,從一開始就形成了封閉作用域。凡是在聲明之前就使用這些變量,就會報錯。

Chapter 4對象擴展對象字面量擴展1.創建對象時,當屬性名和變量名相等時,省略屬性名function createPerson(name, age) {    return {        name,        age    };}2.給對象添加方法時,省略functionvar person = {    name: "Nicholas",    sayName() {        console.log(this.name);    }};3.屬性名let lastName = "last name";let person = {    "first name": "Nicholas",    [lastName]: "Zakas"};console.log(person["first name"]);      // "Nicholas"console.log(person[lastName]);          // "Zakas"用表達式作為屬性名:var suffix = " name";var person = {    ["first" + suffix]: "Nicholas",    ["last" + suffix]: "Zakas"};console.log(person["first name"]);      // "Nicholas"console.log(person["last name"]);       // "Zakas"4.新方法1.Object.is()  比較兩個值是否嚴格相等2.Object.assign()  用于對象的合并,將源對象的所有屬性復制到目標對象var target = { a: 1 };var source1 = { b: 2 };var source2 = { c: 3 };Object.assign(target, source1, source2);target // {a:1, b:2, c:3}還可用于為對象添加屬性、方法等。5.重寫"use strict";var person = {    name: "Nicholas",    name: "Greg"        // no error in ES6 strict mode};console.log(person.name);       // "Greg"6.屬性枚舉順序 Object.getOwnPRopertyNames(obj)數字按升序排列,字符串按它們添加到對象的順序排列.7.改變PrototypeObject.setPrototypeOf()方法,接收兩個對象最為參數8.super 指向當前對象原型的指針原為Object.getPrototypeOf(this).getGreeting.call(this);改為super.getGreeting();【在簡化的方法中】,可以通過super調用對象原型上的任何方法。let friend = {    getGreeting: function() {        // syntax error        return super.getGreeting() + ", hi!";    }};

Chapter 5解構賦值ES6允許按照一定模式,從數組和對象中提取值,對變量進行賦值。1.對象解構let node = {    type: "Identifier",    name: "foo"};let { type, name } = node;變量名和屬性名一致var { foo, bar } = { foo: "aaa", bar: "bbb" };foo // "aaa"bar // "bbb"對象的解構賦值的內部機制,是先找到同名屬性,然后再賦給對應的變量。真正被賦值的是后者,而不是前者。var { foo: baz } = { foo: "aaa", bar: "bbb" };baz // "aaa"foo // error: foo is not defined也可嵌套var obj = {  p: [    'Hello',    { y: 'World' }  ]};var { p: [x, { y }] } = obj;x // "Hello"y // "World"指定默認值let node = {    type: "Identifier",    name: "foo"};let { type, name, value = true } = node;2.數組解構數據解構對items的位置操作模式匹配let colors = [ "red", "green", "blue" ];let [ firstColor, secondColor ] = colors;console.log(firstColor);        // "red"console.log(secondColor);       // "green"交換變量:let a = 1,    b = 2;[ a, b ] = [ b, a ];3.混合Chapter 71.set:類似數組,但成員的值唯一let set=new Set();可接收一個數組作為參數,用來初始化。添加:set.add(value)判斷是否存在:set.has(value)刪除一個:set.delete(value)刪除全部:set.clear() forEach()方法:set.forEach(function(value,key,ownerSet){});forEach方法還可以有第二個參數,表示綁定的this對象。key和value相等set里的forEach()不能訪問items索引,如需要,則應將其轉換為數組。Array.from方法可將Set結構轉換為數組。set轉換為array: array=[...set];(會去除set中的重復項)。Weak Sets:(對象引用)弱引用(即垃圾回收機制不考慮WeakSet對該對象的引用,也就是說,如果其他對象都不再引用該對象,那么垃圾回收機制會自動回收該對象所占用的內存,不考慮該對象還存在于WeakSet之中。這個特點意味著,無法引用WeakSet的成員,因此WeakSet是不可遍歷的。)WeakSet結構與Set類似,也是不重復的值的集合,但WeakSet的成員只能是對象。創建:let set=new WeakSet();三大集合對象:arrays, maps, sets2.map:(key-value)let map=new Map();添加:map.set(key,value);檢索:map.get();對象也可以是key。也有has(),delete(),clear()方法。Weak Maps:每一個key都必須是對象object,鍵名所指向的對象,不計入垃圾回收機制。用處:和DOM元素進行數據交互。存儲對象實例的專用數據。(WeakMap的設計目的在于,鍵名是對象的弱引用(垃圾回收機制不將該引用考慮在內),所以其所對應的對象可能會被自動回收。當對象被回收后,WeakMap自動移除對應的鍵值對。典型應用是,一個對應DOM元素的WeakMap結構,當某個DOM元素被清除,其所對應的WeakMap記錄就會自動被移除?;旧?,WeakMap的專用場合就是,它的鍵所對應的對象,可能會在將來消失。WeakMap結構有助于防止內存泄漏。)Chapter 81.是一個方法,返回一個迭代器。function關鍵字與函數名之間有一個星號,函數體內部使用yield語句,定義不同的內部狀態。2.function *createIterator(){}let iterator=createIterator();  指向內部狀態的指針對象如果是匿名函數,星號的位置為:let createIterator=function *(){}3.yield:執行完一條時,暫停執行,直到下一個next()調用的時候,再執行下一條yield。每次調用next(),返回一個有著value和done兩個屬性的對象。4.因為是方法,可添加到對象。5.for-of如果只是迭代數組或集合里的值的話用for-oflet values=[1,2,3];for(let num of values){    console.log(num);}6.通過Symbol.iterator訪問默認迭代器let values=[1,2,3];let iterator=values[Symbol.iterator]();console.log(iterator.next());獲取默認迭代器,并用于遍歷數組中的items,也是for-of的內部過程。還可以據此判斷一個對象是否可迭代。7.自定義迭代器自己創建一個Symbol.iterator屬性,該屬性包含一個Generator函數。8.內置迭代器entries() 返回key-value對values() 返回valueskeys() 返回keys9.三大集合類型的for-of時的默認迭代器arrays/sets: values()maps: entries()10.字符串迭代器for-of 可打印字符串的雙字節字符11. 節點列表迭代器12.擴展運算符(...)可將多個數組插入到一個數組中13.高級迭代器功能當將參數傳遞給next()方法時,該參數將成為上一個yield語句的返回值。iterator.throw(new Error("boom"));使用yield時,next()和throw()方法控制迭代器中的執行。next()可通過給定值來指示迭代器繼續執行,throw()通過拋出錯誤來指示迭代器繼續執行。14. return 停止執行,done為true,value為undefined。若提供一個返回值,則value為該值,done為true。再執行一條next()時,value變為undefined。15. 委托在yield和函數名之間加*號,可以委托給別的Generator。function *createCombinedIterator(){    yield *createNumberIterator();    yield *createColorIterator();}據此可以將多個Generator的value合成一個。也可訪問返回值。16. 異步編程因為生成器允許在執行的時候有效地暫停執行,這位異步處理提供了許多可能性。一個簡單的任務運行器,需定義一個函數,接受一個Generator作為參數,在函數內創建一個迭代器并start。若要傳遞數據,可將result.value傳入next()作為參數。一個異步的任務運行器,result.value(function(err,data){} 有一個回調函數。Chapter 9類1.類的聲明:class PersonClass{    constructor(name){        this.name=name;    }    sayName(){         console.log(this.name);    }}let person=new PersonClass("Jack");2.類的聲明類似let,存在暫時性死區。3.在類的里面不能重寫類名,在類外可以。4.類表達式匿名類表達式,省略類名。let PersonClass=class{}若有類名,如let PersonClass=class PersonClass2{},則PersonClass2只存在于類內,類外為undefined。5.ES6中,類可作為函數參數。6.類表達式可通過立即調用類構造函數來創建實例。需要new。let person=new Class{    constructor(name){        this.name=name;    }    sayName(){        console.log(this.name);    }}("Jack");創建一個匿名類表達式并立即執行。7.訪問器屬性類允許在原型上定義訪問器屬性。get和setclass CustomHTMLElement{    constructor(element){        this.element=element;    }    get html(){        return this.element.inerHTML;    }    set html(vlaue){        this.element.innerHTML=vlaue;    }}var descriptor=Object.getOwnPropertyDescriptor(CustomHTMLElement.prototype,"html");console.log("get" in descriptor);  //ture【Object.getOwnPropertyDescriptor(object,propertyname)獲取指定對象的自身屬性描述符。自身屬性描述符是指直接在對象上定義(而非從對象的原型繼承)的描述符。】8.[表達式]使用變量為類定義中的方法分配名稱。let methodName="sayName";class PersonClass{    constructor(name){        this.name=name;    }    [methodName](){        cosole.log(this.name);    }};使用變量為類定義中的方法分配屬性名let propertyName="html";class CustomHTMLElement{    ...    get [propertyName](){...}    ...}9. Generator Methods定義:class MyClass{    *createIterator(){        yield 1;        yield 2;    }}let instance=new MyClass();let iterator=instance.createIterator();9.靜態成員class PersonClass{    ...    static create(name){        return new PersonClass(name);    }}let person=PersonClass.create("Jack");10.派生類繼承,關鍵字extendsclass Rectangle {    constructor(length, width) {        this.length = length;        this.width = width;    }    getArea() {        return this.length * this.width;    }}class Square extends Rectangle {    constructor(length) {        // equivalent of Rectangle.call(this, length, length)        super(length, length);    }}var square = new Square(3);Square構造函數使用super()來調用具有指定參數的Rectangle構造函數。如果選擇不使用構造函數,在創建一個新的類的實例時,super()會被自動調用。11.繼承靜態成員如果基類具有靜態成員,那么這些靜態成員也可在派生類上使用。12.表達式派生類只要表達式帶有[[Construct]]的函數和原型,就可以對任何表達式使用extend。在extends之后接受任何類型的表達式提供了強大的可能性,例如動態確定要繼承的內容。chapter 10數組1.創建數組Array.of() 參數為items2.將一個類數組轉換為數組Array.from() 參數為items,可接收一個函數作為第二個參數,每個item在該函數運行后輸出。還可接收第三個參數代表this。還可在迭代器中使用:let numbers = {    *[Symbol.iterator]() {        yield 1;        yield 2;        yield 3;    }};let numbers2 = Array.from(numbers, (value) => value + 1);console.log(numbers2);              // 2,3,43.find()&findIndex()let numbers = [25, 30, 35, 40, 45];console.log(numbers.find(n => n > 33));         // 35console.log(numbers.findIndex(n => n > 33));    // 24.fill() 對數組items的整體或部分進行重寫5.copyWithin()6.Typed Arrays數組緩存區所有類型數組的基礎是數組緩沖區,它是一個可以包含指定數量字節的內存位置。創建數組緩沖區:let buffer=new ArrayBuffer(10);console.log(buffer.byteLength); //10可用slice()7.使用視圖操作數組緩沖區 DataView數組緩沖區表示內存位置,視圖是用于操作該內存的接口。視圖對數組緩沖區或數組緩沖區字節的子集進行操作,以一種數值數據類型讀取和寫入數據。let buffer=new ArrayBuffer(10);let view=new DataView(buffer); //所有let view=new DataView(buffer,5,2); //部分 5,6檢索視圖信息有三個,buffer,byteOffset,byteLength8.讀寫數據getInt8(byteOffset,littleEndian),setInt8(byteOffset,value,littleEndian視圖允許在任何時間點以任何格式讀取和寫入,而不考慮之前數據時如何存儲的。9.創建特定類型視圖let buffer=new ArrayBuffer(10),     view1=new Int8Array(buffer),     view2=new Int8Array(buffer,5,2);


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲经典中文字幕| 欧美激情精品久久久久久黑人| 日韩成人激情在线| 国产精品免费在线免费| 久久九九全国免费精品观看| 欧美另类暴力丝袜| 亚洲欧美中文在线视频| 亚洲娇小xxxx欧美娇小| 日本精品va在线观看| 久久久国产精品x99av| 成人国产精品免费视频| 国产精品成人va在线观看| 国产精品揄拍一区二区| 亚洲一区二区中文字幕| 亚洲视频在线视频| www亚洲欧美| 神马国产精品影院av| 欧美国产欧美亚洲国产日韩mv天天看完整| 在线视频亚洲欧美| 91热福利电影| 国产精品扒开腿做爽爽爽的视频| 成人中心免费视频| 国产一区欧美二区三区| 久久人人97超碰精品888| 久久久久久久97| 国产精品视频久久久久| 精品久久久久久久久久久| 欧美裸体xxxx极品少妇软件| 日韩中文理论片| 91精品国产乱码久久久久久久久| 日韩av最新在线观看| 国产精品视频网址| 91精品国产一区| 91精品国产综合久久久久久蜜臀| 日韩一区二区久久久| 欧洲成人免费视频| 亚洲午夜精品久久久久久性色| 欧美成人h版在线观看| 久久精品91久久香蕉加勒比| 国产精品美女久久久免费| 欧美成人四级hd版| 久久伊人免费视频| 久久久久久久久国产精品| www亚洲精品| 国产日韩欧美日韩| 亚洲精品成人久久| 亚洲国产精品va在线看黑人动漫| 欧美成人免费va影院高清| 欧美激情手机在线视频| 久久在线精品视频| 日韩福利在线播放| 久久综合国产精品台湾中文娱乐网| 国产免费一区二区三区香蕉精| 欧美日韩国产成人在线观看| 26uuu国产精品视频| 国产91精品久久久久久久| 黑人巨大精品欧美一区免费视频| 国产精品久久久久久久久久久久| 亚洲一区二区久久久久久久| 亚洲第一区在线观看| 欧美电影在线观看完整版| 欧美日韩在线另类| 久久久久久久久综合| 欧美一级免费看| 久久久伊人欧美| 欧美日韩国产麻豆| 在线视频日韩精品| 国产热re99久久6国产精品| 国产欧美亚洲精品| 日本欧美在线视频| 欧美精品一区在线播放| 日本一本a高清免费不卡| 懂色aⅴ精品一区二区三区蜜月| 国产亚洲欧美日韩一区二区| 欧美俄罗斯性视频| 久久久久久久久中文字幕| 欧美一区视频在线| 91精品国产91| 91视频免费在线| 日韩电影在线观看中文字幕| 欧美激情欧美狂野欧美精品| 亚洲肉体裸体xxxx137| 国产+成+人+亚洲欧洲| 欧美极品xxxx| 亚洲一区二区三区乱码aⅴ| 欧美黄色片免费观看| 国产精品久久久久久婷婷天堂| 1769国内精品视频在线播放| 狠狠色香婷婷久久亚洲精品| 亚洲美女性生活视频| 欧美俄罗斯性视频| 69视频在线播放| 高清欧美电影在线| 韩国三级日本三级少妇99| 在线成人中文字幕| 久久99久久99精品免观看粉嫩| 久久手机精品视频| 日韩av电影在线播放| 91嫩草在线视频| 亚洲欧美激情在线视频| 精品国产福利在线| 亚洲天堂男人的天堂| 亚洲精品视频久久| 最近中文字幕2019免费| 91老司机在线| 精品激情国产视频| 欧美日韩免费一区| 亚洲精品美女久久久| 欧美中文字幕视频在线观看| 国产欧美一区二区三区视频| 亚洲天堂av网| www.色综合| 欧美在线观看网站| 久久福利视频网| 欧美激情小视频| 欧美激情国产日韩精品一区18| 青青草原一区二区| 亚洲自拍av在线| 国产精品大陆在线观看| 久久久国产精品免费| 欧美电影免费在线观看| 国产成一区二区| 成人中文字幕在线观看| 亚洲综合av影视| 国产成人一区二区三区电影| 日韩在线视频导航| 欧美精品www在线观看| 91国产精品视频在线| 亚洲精品狠狠操| 日本三级韩国三级久久| 欧美在线视频一二三| 亚洲最大的av网站| 91在线观看免费高清完整版在线观看| 久久夜精品va视频免费观看| 亚洲va欧美va国产综合剧情| 久久久久久久久久国产| 亚洲国产另类久久精品| 中文字幕亚洲一区二区三区五十路| 欧美日韩不卡合集视频| 狠狠色狠狠色综合日日小说| 亚洲国产欧美一区二区三区久久| 欧日韩在线观看| 国产精品亚洲аv天堂网| 欧美理论电影在线播放| 在线午夜精品自拍| 日韩在线视频播放| 亚洲女同精品视频| 久久久国产视频91| 亚洲第一精品久久忘忧草社区| 欧美电影免费观看高清完整| 国产精品高潮视频| 国产一区二区三区在线视频| 伊人久久免费视频| 国产精品一二三视频| 亚洲欧美一区二区精品久久久| 成人国产在线视频| 亚洲精品99999| 美女黄色丝袜一区| 亚洲电影成人av99爱色| 欧美不卡视频一区发布| 国产精品草莓在线免费观看| 亚洲最新视频在线| 久久久亚洲国产天美传媒修理工| 色偷偷综合社区|