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

站長資訊網
最全最豐富的資訊網站

class在es6中本質是什么

class在es6中本質是函數(構造器),使用的時候,也是直接對類使用new命令,跟構造函數的用法一致;class可以看作一個語法糖,讓對象原型的寫法更加清晰、更像面向對象編程的語法。用class定義類的方法“class Person{//類聲明}”或“const Person=class{//類表達式}”。

class在es6中本質是什么

前端(vue)入門到精通課程:進入學習
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API調試工具:點擊使用

本教程操作環境:windows7系統、ECMAScript 6版、Dell G3電腦。

es6的Class類詳解

class基本語法

JavaScript 語言中,生成實例對象的傳統方法是通過構造函數和原型的組合模式.ES6 提供了更接近傳統語言(java)的寫法,引入了 Class(類)這個概念,作為對象的模板。通過class關鍵字,可以定義類。

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

ES6 的class可以看作只是一個語法糖,它的絕大部分功能,ES5 都可以做到,新的class寫法只是讓對象原型的寫法更加清晰、更像面向對象編程的語法而已。

注:“語法糖”:是由英國計算機科學家彼得·約翰·蘭達(Peter J. Landin)發明的一個術語,指計算機語言中添加的某種語法,這種語法對語言的功能并沒有影響,但是更方便程序員使用。

class在ES6本質就是函數(構造器)

class在es6中本質是什么

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

class在es6中本質是什么

ES6 的class與ES5寫法的幾個核心注意點: ES5 的構造函數Point,對應 ES6 的Point類的構造方法。 類的所有方法都定義在類的prototype屬性上面。 定義“類”的方法的時候,前面不需要加上function這個關鍵字,直接把函數定義放進去了就可以了 方法之間不需要逗號分隔,加了會報錯 ES6的class使用方法與ES5的構造函數一模一樣

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

另外:ES5 的構造函數Point,對應 ES6 的Point類的構造方法。

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

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

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

Class的基本語法之constructor

constructor方法是類的默認方法,通過new命令生成對象實例時,自動調用該方法。一個類必須有constructor方法,如果沒有顯式定義,一個空的constructor方法會被默認添加。

constructor方法默認返回實例對象(即this),完全可以指定返回另外一個對象 (得是在創造class時就定義設置的, 在創造完class后,通過Object.assign的方式是沒法改變構造函數的返回值的).

Class的基本語法之類的調用方式

類必須使用new調用,否則會報錯。這是它跟普通構造函數 ( 普通構造函數完全可以當做普通函數使用 ) 的一個主要區別,后者不用new也可以執行。

class在es6中本質是什么

Class的基本語法之getter和setter

與 ES5 一樣,在“類”的內部可以使用get和set關鍵字,對某個屬性設置存值函數和取值函數,攔截該屬性的存取行為。

  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);
登錄后復制

Class的基本語法之類的屬性名

class在es6中本質是什么

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

Class的基本語法的特別注意點

(1)嚴格模式

類和模塊的內部,默認就是嚴格模式,所以不需要使用use strict指定運行模式。只要你的代碼寫在類或模塊之中,就只有嚴格模式可用。考慮到未來所有的代碼,其實都是運行在模塊之中,所以 ES6 實際上把整個語言升級到了嚴格模式。

(2)不存在提升

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

上面代碼中,Foo類使用在前,定義在后,這樣會報錯,因為 ES6 不會把類的聲明提升到代碼頭部。

(3)name 屬性

class point{ } point.name//point
登錄后復制

由于本質上,ES6 的類只是 ES5 的構造函數的一層包裝,所以函數的許多特性都被Class繼承,包括name屬性。

(4)this 的指向

類的方法內部如果含有this,它默認指向類的實例。但是,必須非常小心,一旦單獨使用該方法,很可能報錯。

class在es6中本質是什么

printName方法中的this,默認指向Logger類的實例。但是,如果將這個方法提取出來單獨使用,this會指向該方法運行時所在的環境(由于 class 內部是嚴格模式,所以 this 實際指向的是undefined),從而導致找不到print方法而報錯。

解決辦法:

一個比較簡單的解決方法是,在構造方法中綁定this,這樣就不會找不到print方法了。

另一種解決方法是使用箭頭函數。箭頭函數位于構造函數內部,它的定義生效的時候,是在構造函數執行的時候。這時,箭頭函數所在的運行環境,肯定是實例對象,所以this會總是指向實例對象。

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

Class的靜態屬性和方法

類相當于實例的原型,所有在類中定義的方法,都會被實例繼承。如果在一個方法前,加上static關鍵字,就表示該方法不會被實例繼承,而是直接通過類來調用,這就稱為“靜態方法”。

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

父類的靜態方法,可以被子類繼承靜態方法也是可以從super對象上調用的。

 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);
登錄后復制

Class的私有方法和私有屬性

私有方法和私有屬性:是只能在類的內部訪問的方法和屬性,外部不能訪問。 這是常見需求,有利于代碼的封裝,但 ES6 不提供,只能通過變通方法模擬實現。

_bar方法前面的下劃線,表示這是一個只限于內部使用的私有方法。但是,這種命名是不保險的,在類的外部,還是可以調用到這個方法

下面代碼中的寫法不僅可以寫私有屬性,還可以用來寫私有方法

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

私有屬性也可以設置 getter 和 setter 方法。

私有屬性不限于從this引用,只要是在類的內部,實例也可以引用私有屬性。

構造函數的新屬性

ES6 為new命令引入了一個new.target屬性,該屬性一般用在構造函數之中,返回new命令作用于的那個構造函數。如果構造函數不是通過new命令調用的,new.target會返回undefined,因此這個屬性可以用來確定構造函數是怎么調用的。

私有屬性也可以設置 getter 和 setter 方法。

私有屬性不限于從this引用,只要是在類的內部,實例也可以引用私有屬性。

構造函數的新屬性

ES6 為new命令引入了一個new.target屬性,該屬性一般用在構造函數之中,返回new命令作用于的那個構造函數。如果構造函數不是通過new命令調用的,new.target會返回undefined,因此這個屬性可以用來確定構造函數是怎么調用的。

class在es6中本質是什么

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
欧美交a欧美精品喷水| 91精品一区二区三区综合在线爱| 精品72久久久久中文字幕| 日本不卡高清| 亚洲伊人精品酒店| 人人香蕉久久| 都市激情国产精品| 国产 日韩 欧美 综合 一区| 国产精品chinese| 国产精品成人自拍| 国产精品www.| 国产精品成人一区二区网站软件| 日韩av一区二区在线影视| 久久亚洲精品伦理| 免播放器亚洲| 免费看日韩精品| 中文亚洲欧美| 91高清一区| 亚洲午夜91| 91精品国产自产在线观看永久∴ | 国产精品久久久久久久久免费高清| 亚洲aa在线| 日本一区二区中文字幕| 亚洲精品在线二区| 日本一区二区三区中文字幕| 日韩av不卡一区二区| 日韩av一级片| 国产伦精品一区二区三区在线播放| 国产精品午夜av| 精品国产一区二区三区av片| 国产一区不卡| 久久久久一区| 99国产精品久久久久久久成人热| 2023国产精品久久久精品双| 国产精品av一区二区| 欧美特黄视频| 亚洲精品乱码| 国产私拍福利精品视频二区| 国产精品18| 日韩黄色大片网站| 免费av一区| 亚洲精选av| 国产精品亚洲欧美一级在线| 久久天堂影院| 亚洲成人精品| 日韩精品一卡二卡三卡四卡无卡| 日韩精品第一| 国内揄拍国内精品久久| 欧美粗暴jizz性欧美20| 在线精品视频在线观看高清| 久久亚洲影院| 国产精品白浆| 美女网站视频一区| 亚洲综合日韩| 国产调教一区二区三区| 久久男人天堂| 蜜桃av一区| 免费一级欧美片在线观看网站| 日韩综合精品| 视频一区在线播放| 久久99性xxx老妇胖精品| 黑森林国产精品av| 久久成人亚洲| 精品精品国产三级a∨在线| 波多视频一区| 亚洲综合福利| 日韩中文字幕高清在线观看| 欧美一区网站| 91精品福利| 激情综合五月| 日韩**一区毛片| 欧美中文一区二区| 欧美aⅴ一区二区三区视频| 国产精品毛片| 日本а中文在线天堂| 日韩成人av影视| 国产字幕视频一区二区| 欧美精品99| 人人爽香蕉精品| 免费看av不卡| 欧美影院视频| 亚洲激情五月| 精品久久久网| 亚洲在线久久| 国产99亚洲| 亚洲狼人精品一区二区三区| а√天堂中文在线资源8| 国产视频一区欧美| 欧美xxxx性| 久久国产88| 色88888久久久久久影院| 亚洲丝袜啪啪| 国产96在线亚洲| 蜜臀av性久久久久蜜臀aⅴ四虎 | 国产乱码午夜在线视频| 99综合视频| 久久久免费人体| 亚洲精品电影| 麻豆成人综合网| 久久久久国产精品一区三寸| 国产亚洲人成a在线v网站| 最近高清中文在线字幕在线观看1| 亚洲尤物在线| 色在线视频观看| 日韩精品高清不卡| 久久精品主播| 国产精品久久久亚洲一区| 欧美精品黄色| 国产精品色在线网站| 久久久久国产精品一区二区| 国产精品一区三区在线观看| 国产精品7m凸凹视频分类| 国产精久久久| 亚洲图片久久| 精品亚洲美女网站| 国产精品入口久久| 99视频一区| 电影天堂国产精品| 欧美日韩中文| 日韩专区欧美专区| 伊人精品一区| 国产精品一区二区三区美女 | 亚洲欧洲日韩| 99久久久久| 精品亚洲二区| 麻豆国产精品777777在线| 视频一区二区不卡| 久久人人精品| 精品视频黄色| 欧美一区二区三区久久| 只有精品亚洲| 久久婷婷激情| 中文字幕人成乱码在线观看| 视频精品一区二区| 亚洲小说春色综合另类电影| 欧美日韩三区| 日韩精品免费一区二区三区| 精品视频91| 国产精品一卡| 欧美在线91| 日韩精选在线| 亚洲影院天堂中文av色| 欧美日韩精品免费观看视频完整 | 国产精品一站二站| 日本成人中文字幕在线视频| 欧美日韩中文一区二区| 日韩毛片视频| 日韩国产专区| 九色porny丨国产首页在线| 国精品产品一区| 免费在线成人| 你懂的亚洲视频| 精品一区二区三区的国产在线观看| 国产精品二区影院| 国产精品欧美三级在线观看 | 先锋亚洲精品| 夜夜嗨网站十八久久| 国产综合婷婷| 精品三级av| 久久91视频| 日韩成人a**站| 成午夜精品一区二区三区软件| 老鸭窝一区二区久久精品| 精品一区二区三区在线观看视频 | 国产精品一区二区av日韩在线| 欧美在线日韩| 久久gogo国模啪啪裸体| 精品国产三区在线| 中文字幕在线免费观看视频| 99成人在线视频| 亚洲国产专区校园欧美| 99久久精品国产亚洲精品| 国精品一区二区| 亚洲主播在线| 亚洲精品伊人| 久久国产精品色av免费看| 成人av三级| 婷婷综合五月| 另类亚洲自拍| 婷婷视频一区二区三区| 欧美一级网站| 麻豆一区二区三| 在线一区av| 国产专区一区| 国产精品tv| 久久不卡国产精品一区二区| 秋霞影院一区二区三区 | 国产一精品一av一免费爽爽| 久久99精品久久久野外观看| 欧美激情国产在线| 丝袜美腿诱惑一区二区三区| 狠狠干综合网| 日本午夜免费一区二区| 国产欧美日韩亚洲一区二区三区| 国产成人调教视频在线观看| 欧美粗暴jizz性欧美20| 亚洲精品乱码日韩| 免费亚洲婷婷| 亚洲韩日在线| 亚洲青青久久|