久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長(zhǎng)資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

class在es6中本質(zhì)是什么

class在es6中本質(zhì)是函數(shù)(構(gòu)造器),使用的時(shí)候,也是直接對(duì)類使用new命令,跟構(gòu)造函數(shù)的用法一致;class可以看作一個(gè)語(yǔ)法糖,讓對(duì)象原型的寫(xiě)法更加清晰、更像面向?qū)ο缶幊痰恼Z(yǔ)法。用class定義類的方法“class Person{//類聲明}”或“const Person=class{//類表達(dá)式}”。

class在es6中本質(zhì)是什么

前端(vue)入門到精通課程:進(jìn)入學(xué)習(xí)
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API調(diào)試工具:點(diǎn)擊使用

本教程操作環(huán)境:windows7系統(tǒng)、ECMAScript 6版、Dell G3電腦。

es6的Class類詳解

class基本語(yǔ)法

JavaScript 語(yǔ)言中,生成實(shí)例對(duì)象的傳統(tǒng)方法是通過(guò)構(gòu)造函數(shù)和原型的組合模式.ES6 提供了更接近傳統(tǒng)語(yǔ)言(java)的寫(xiě)法,引入了 Class(類)這個(gè)概念,作為對(duì)象的模板。通過(guò)class關(guān)鍵字,可以定義類。

class point{      	constructor(x,y){              this.x=x;         this.y=y;     }     play(){              console.log("我會(huì)玩");     } }
登錄后復(fù)制

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

注:“語(yǔ)法糖”:是由英國(guó)計(jì)算機(jī)科學(xué)家彼得·約翰·蘭達(dá)(Peter J. Landin)發(fā)明的一個(gè)術(shù)語(yǔ),指計(jì)算機(jī)語(yǔ)言中添加的某種語(yǔ)法,這種語(yǔ)法對(duì)語(yǔ)言的功能并沒(méi)有影響,但是更方便程序員使用。

class在ES6本質(zhì)就是函數(shù)(構(gòu)造器)

class在es6中本質(zhì)是什么

class中的原型方法全部被添加到了parent的原型對(duì)象上

class在es6中本質(zhì)是什么

ES6 的class與ES5寫(xiě)法的幾個(gè)核心注意點(diǎn): ES5 的構(gòu)造函數(shù)Point,對(duì)應(yīng) ES6 的Point類的構(gòu)造方法。 類的所有方法都定義在類的prototype屬性上面。 定義“類”的方法的時(shí)候,前面不需要加上function這個(gè)關(guān)鍵字,直接把函數(shù)定義放進(jìn)去了就可以了 方法之間不需要逗號(hào)分隔,加了會(huì)報(bào)錯(cuò) ES6的class使用方法與ES5的構(gòu)造函數(shù)一模一樣

//類的所有方法都定義在類的prototype屬性上面。 class piont{          constructor(){      		//     }     play(){                   } } //上述代碼等價(jià)于 point.prototype={          constructor() {     },     play(){     }; }  //在類的實(shí)例上面調(diào)用方法,其實(shí)就是調(diào)用原型上的方法。 class Ba{      	// } let b=new Ba(); b.constructor===Ba.prototype.constructor//true
登錄后復(fù)制

另外:ES5 的構(gòu)造函數(shù)Point,對(duì)應(yīng) ES6 的Point類的構(gòu)造方法。

由于類的方法都定義在prototype對(duì)象上面,所以類的新方法可以添加在prototype對(duì)象上面。Object.assign方法可以很方便地一次向類添加多個(gè)方法。

class ponit{          constructor(){                   } } Object.assign(Point.prototype,{      	play(){     }; }) //Class直接定義的方法之間不需要逗號(hào)分隔,加了會(huì)報(bào)錯(cuò). 但是這里是Object.assign的方法格式, 這里面需要往Point.prototype里面添加的方法就需要符合對(duì)象的默認(rèn)格式
登錄后復(fù)制

類的內(nèi)部所有定義的方法,都是不可枚舉的(non-enumerable)。通過(guò)Object.assign方法往類的原型上添加的方法,constructor不可枚舉, 其他的可以枚舉

Class的基本語(yǔ)法之constructor

constructor方法是類的默認(rèn)方法,通過(guò)new命令生成對(duì)象實(shí)例時(shí),自動(dòng)調(diào)用該方法。一個(gè)類必須有constructor方法,如果沒(méi)有顯式定義,一個(gè)空的constructor方法會(huì)被默認(rèn)添加。

constructor方法默認(rèn)返回實(shí)例對(duì)象(即this),完全可以指定返回另外一個(gè)對(duì)象 (得是在創(chuàng)造class時(shí)就定義設(shè)置的, 在創(chuàng)造完class后,通過(guò)Object.assign的方式是沒(méi)法改變構(gòu)造函數(shù)的返回值的).

Class的基本語(yǔ)法之類的調(diào)用方式

類必須使用new調(diào)用,否則會(huì)報(bào)錯(cuò)。這是它跟普通構(gòu)造函數(shù) ( 普通構(gòu)造函數(shù)完全可以當(dāng)做普通函數(shù)使用 ) 的一個(gè)主要區(qū)別,后者不用new也可以執(zhí)行。

class在es6中本質(zhì)是什么

Class的基本語(yǔ)法之getter和setter

與 ES5 一樣,在“類”的內(nèi)部可以使用get和set關(guān)鍵字,對(duì)某個(gè)屬性設(shè)置存值函數(shù)和取值函數(shù),攔截該屬性的存取行為。

  class demo{                  constructor(age){                      this.age=agie;                 this._age=age;             }             get age(){                      return this._age;             }             set age(value){                      this._age=value;                 console.log("年齡"+value);             }         }         let kevin=new demo(9);         kevin.age=18;         console.log(kevin.age);
登錄后復(fù)制

Class的基本語(yǔ)法之類的屬性名

class在es6中本質(zhì)是什么

上面代碼中,Square類的方法名getArea,是從表達(dá)式得到的。

Class的基本語(yǔ)法的特別注意點(diǎn)

(1)嚴(yán)格模式

類和模塊的內(nèi)部,默認(rèn)就是嚴(yán)格模式,所以不需要使用use strict指定運(yùn)行模式。只要你的代碼寫(xiě)在類或模塊之中,就只有嚴(yán)格模式可用。考慮到未來(lái)所有的代碼,其實(shí)都是運(yùn)行在模塊之中,所以 ES6 實(shí)際上把整個(gè)語(yǔ)言升級(jí)到了嚴(yán)格模式。

(2)不存在提升

new foo(); class foo{};
登錄后復(fù)制

上面代碼中,F(xiàn)oo類使用在前,定義在后,這樣會(huì)報(bào)錯(cuò),因?yàn)?ES6 不會(huì)把類的聲明提升到代碼頭部。

(3)name 屬性

class point{ } point.name//point
登錄后復(fù)制

由于本質(zhì)上,ES6 的類只是 ES5 的構(gòu)造函數(shù)的一層包裝,所以函數(shù)的許多特性都被Class繼承,包括name屬性。

(4)this 的指向

類的方法內(nèi)部如果含有this,它默認(rèn)指向類的實(shí)例。但是,必須非常小心,一旦單獨(dú)使用該方法,很可能報(bào)錯(cuò)。

class在es6中本質(zhì)是什么

printName方法中的this,默認(rèn)指向Logger類的實(shí)例。但是,如果將這個(gè)方法提取出來(lái)單獨(dú)使用,this會(huì)指向該方法運(yùn)行時(shí)所在的環(huán)境(由于 class 內(nèi)部是嚴(yán)格模式,所以 this 實(shí)際指向的是undefined),從而導(dǎo)致找不到print方法而報(bào)錯(cuò)。

解決辦法:

一個(gè)比較簡(jiǎn)單的解決方法是,在構(gòu)造方法中綁定this,這樣就不會(huì)找不到print方法了。

另一種解決方法是使用箭頭函數(shù)。箭頭函數(shù)位于構(gòu)造函數(shù)內(nèi)部,它的定義生效的時(shí)候,是在構(gòu)造函數(shù)執(zhí)行的時(shí)候。這時(shí),箭頭函數(shù)所在的運(yùn)行環(huán)境,肯定是實(shí)例對(duì)象,所以this會(huì)總是指向?qū)嵗龑?duì)象。

class Logger{          constructor(){              this.printName=this.printName.bind(this);         //但是請(qǐng)注意bind之后返回的函數(shù)里面的this就永久鎖死了問(wèn)題:!!! !!! 堅(jiān)決別用      } } //箭頭函數(shù) class Obj{          constructor(){              this.getThis=()=>this;     } } let o=new Obj(); o.getThis()===o//true
登錄后復(fù)制

Class的靜態(tài)屬性和方法

類相當(dāng)于實(shí)例的原型,所有在類中定義的方法,都會(huì)被實(shí)例繼承。如果在一個(gè)方法前,加上static關(guān)鍵字,就表示該方法不會(huì)被實(shí)例繼承,而是直接通過(guò)類來(lái)調(diào)用,這就稱為“靜態(tài)方法”。

 class Person{                  static sum=0;             constructor(){                      this.add();             }             add(){                      Person.sum++;             }         }         let kaiwen=new Person();         console.log("當(dāng)前的聊天室人數(shù)為:"+Person.sum);         //作用:當(dāng)沒(méi)有實(shí)例化的時(shí)候,我們可以通過(guò)靜態(tài)的屬性和方法去獲取一些信息  // 注意,如果靜態(tài)方法包含this關(guān)鍵字,這個(gè)this指的是類,而不是實(shí)例。靜態(tài)方法可以與非靜態(tài)方法重名。
登錄后復(fù)制

父類的靜態(tài)方法,可以被子類繼承靜態(tài)方法也是可以從super對(duì)象上調(diào)用的。

 class Person{                  constructor(name){                      this.name=name;                 this.sex="男";             }         }         class Student extends Person{                  constructor(name,age){                      super(name);                 this.age=age;             }         }         let s=new Student("張三",11);         console.log(s.name);         console.log(s.age);         console.log(s.sex);
登錄后復(fù)制

Class的私有方法和私有屬性

私有方法和私有屬性:是只能在類的內(nèi)部訪問(wèn)的方法和屬性,外部不能訪問(wèn)。 這是常見(jiàn)需求,有利于代碼的封裝,但 ES6 不提供,只能通過(guò)變通方法模擬實(shí)現(xiàn)。

_bar方法前面的下劃線,表示這是一個(gè)只限于內(nèi)部使用的私有方法。但是,這種命名是不保險(xiǎn)的,在類的外部,還是可以調(diào)用到這個(gè)方法

下面代碼中的寫(xiě)法不僅可以寫(xiě)私有屬性,還可以用來(lái)寫(xiě)私有方法

 class Cat{                  #eyes="眼睛";             static pai(){                      console.log("凱文");             }             say(){                      Cat.pai();                 console.log("貓有一雙大大的"+this.#eyes);             }         }         let kate=new Cat();         kate.say();
登錄后復(fù)制

私有屬性也可以設(shè)置 getter 和 setter 方法。

私有屬性不限于從this引用,只要是在類的內(nèi)部,實(shí)例也可以引用私有屬性。

構(gòu)造函數(shù)的新屬性

ES6 為new命令引入了一個(gè)new.target屬性,該屬性一般用在構(gòu)造函數(shù)之中,返回new命令作用于的那個(gè)構(gòu)造函數(shù)。如果構(gòu)造函數(shù)不是通過(guò)new命令調(diào)用的,new.target會(huì)返回undefined,因此這個(gè)屬性可以用來(lái)確定構(gòu)造函數(shù)是怎么調(diào)用的。

私有屬性也可以設(shè)置 getter 和 setter 方法。

私有屬性不限于從this引用,只要是在類的內(nèi)部,實(shí)例也可以引用私有屬性。

構(gòu)造函數(shù)的新屬性

ES6 為new命令引入了一個(gè)new.target屬性,該屬性一般用在構(gòu)造函數(shù)之中,返回new命令作用于的那個(gè)構(gòu)造函數(shù)。如果構(gòu)造函數(shù)不是通過(guò)new命令調(diào)用的,new.target會(huì)返回undefined,因此這個(gè)屬性可以用來(lái)確定構(gòu)造函數(shù)是怎么調(diào)用的。

class在es6中本質(zhì)是什么

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
精品在线网站观看| 蜜臀av在线播放一区二区三区| 免费在线观看视频一区| 蜜臀av免费一区二区三区| 亚洲午夜黄色| 国产亚洲精品久久久久婷婷瑜伽| 欧美日韩国产一区二区三区不卡| 91精品国产自产在线观看永久∴| 成人免费电影网址| 久久一区二区中文字幕| 午夜精品免费| 国产精品嫩草99av在线| 手机精品视频在线观看| 午夜久久黄色| 免费成人在线影院| 亚洲精品影视| 国产日韩视频| 日韩在线不卡| 久久成人国产| 久久国产精品免费精品3p| 欧美精品99| 精品一区二区三区免费看| 91欧美在线| 久久一级电影| 蜜桃视频免费观看一区| 国产伦理久久久久久妇女| 精品一区视频| 欧美日韩一区二区三区视频播放| 在线一区电影| 日韩动漫一区| 岛国av在线播放| 1024精品久久久久久久久| 亚洲一卡久久| 国产欧美自拍| 久久理论电影| 日韩高清二区| 91日韩欧美| 男女男精品网站| 国产精品jk白丝蜜臀av小说| 丝袜美腿一区| 中文字幕中文字幕精品| 国产精品视频3p| 少妇久久久久| 亚洲一区二区三区无吗| 国产精品美女久久久久久不卡 | 欧美日韩一二| 日韩欧美美女在线观看| 98精品久久久久久久| 亚洲一区国产| 国内在线观看一区二区三区| 99国产精品99久久久久久粉嫩| 国产美女精品视频免费播放软件| 色婷婷久久久| 欧美精品影院| 久久中文字幕二区| 日韩精品视频在线看| 一本大道色婷婷在线| 免费中文字幕日韩欧美| 精品网站aaa| 免费国产亚洲视频| 中文在线а√天堂 | 国产午夜久久| 精品国产欧美| 亚洲91网站| 久久精品免费一区二区三区 | 欧美日韩国产欧| 久久99青青| 91高清一区| 久久精品午夜| 中文字幕一区二区av| 日韩精品诱惑一区?区三区| 日韩国产91| 欧美在线亚洲| 91亚洲一区| 国产三级精品三级在线观看国产| 在线国产一区二区| 欧美韩日一区| 国产精品亚洲欧美一级在线| 怡红院精品视频在线观看极品| 国产成人精选| 亚洲久草在线| 欧美日韩精品在线一区| 欧美日韩调教| 丝袜美腿高跟呻吟高潮一区| 高清一区二区三区| 日韩欧美激情电影| 国内精品99| а√在线中文在线新版| 国产人成精品一区二区三| 爽好多水快深点欧美视频| 欧美成人基地| 久久久精品国产**网站| 日韩精品久久久久久久软件91| 激情婷婷久久| 九九精品调教| 色婷婷色综合| 麻豆国产欧美一区二区三区| 首页亚洲欧美制服丝腿| 精品一区在线| 国产91精品对白在线播放| 成人午夜亚洲| 老司机精品视频网| 国产欧美日韩在线一区二区| 亚洲久草在线| 先锋影音久久久| 蜜臀91精品国产高清在线观看| 中文字幕人成乱码在线观看 | 久久精品99国产精品| 男人的天堂亚洲一区| 91精品成人| 成人精品中文字幕| 成人小电影网站| 国产精品久久观看| 久久精品午夜| 精品视频黄色| 久久精品国产精品亚洲毛片| 国产精品最新| 日本午夜免费一区二区| 97精品久久| 国产亚洲电影| 国产欧美视频在线| 国产欧美高清| 免费日韩成人| 国产精品国产一区| 国产欧洲在线| 久久久精品五月天| 在线看片福利| 日韩欧美午夜| 久久国产日本精品| 精品一区免费| 香蕉精品999视频一区二区| 水野朝阳av一区二区三区| 久久国产精品99国产| 蜜臀久久99精品久久久久久9 | 欧美日韩中文字幕一区二区三区| 999视频精品| 欧美日韩国产传媒| 国产99精品一区| 中文日韩在线| 中文字幕av一区二区三区人| 日本不卡视频在线| 国产精品99久久久久久董美香| 久久精品资源| av在线资源| 蜜桃一区二区三区| 蜜臀a∨国产成人精品| 青青伊人久久| 久久伊人久久| 亚洲先锋成人| 亚洲2区在线| 麻豆极品一区二区三区| 98精品视频| 亚洲成人二区| 丝袜美腿亚洲一区| 日韩视频一二区| 久久精品一区二区国产| 国产 日韩 欧美一区| 视频在线观看一区二区三区| 青青国产91久久久久久| 精品一区91| 美女网站一区| 日韩精选在线| 色婷婷综合网| 亚洲综合精品四区| 国产剧情在线观看一区| 桃色av一区二区| 日韩中文字幕一区二区三区| 日韩av中文在线观看| 美女av在线免费看| 综合激情一区| 国产精品99一区二区三区| 宅男噜噜噜66国产日韩在线观看| 国产亚洲精品美女久久久久久久久久| av高清不卡| 日韩精品中文字幕一区二区| 青青青免费在线视频| 六月婷婷一区| 久久亚洲道色| 亚洲综合三区| 美女视频黄 久久| 夜夜嗨一区二区| 精品视频国产| 伊人精品视频| 久久精品伊人| 亚洲一区二区日韩| 成人福利视频| 日本成人在线视频网站| 麻豆mv在线观看| 日韩高清不卡一区二区| 亚洲成人二区| 国产精品二区影院| 亚洲经典在线| 国产精品麻豆久久| 日韩精品成人在线观看| 欧美日韩一区二区三区视频播放| 国产欧美一区二区色老头| 狠狠干成人综合网| 欧美国产亚洲精品| 中文一区一区三区免费在线观 | 午夜国产精品视频免费体验区|