摘要:函數(shù)中使用關(guān)鍵詞定義構(gòu)造函數(shù)的的方法和屬性上面代碼首先用定義了一個類,可以看到里面有一個方法,這就是構(gòu)造方法,而關(guān)鍵字則代表實例對象。這是因為子類沒有自己的對象,而是繼承父類的對象,然后對其進行加工。
ES6 classes(類)
Ecmascript5方法我們在編程過程中常常用到面向?qū)ο螅瑢ο髣?chuàng)建實例這個方法,但是es6中給我封裝了一個class類
下邊給大家介紹一下!
//萬事萬物皆對象 //1.類是由對象(抽象)泛化出來的 //2.對象是由類創(chuàng)建出來的 //3.對象叫類的具體實例 function Person(name,age){ this.name=name, this.age=age } Person.prototype.run=function(){ console.log(this.name+" 我會跑") } var weiwei=new Person("weiwei",21); console.log(weiwei) function SuperMan(name,age,sex,body){ //Person.apply(this,arguments);//繼承了父類的屬性 Person.call(this,name,age,sex)//apply 傳進來的是數(shù)組集合,call傳進來的是數(shù)組 //自己的屬性 this.body=body; } SuperMan.prototype=Object.create(Person.prototype);//繼承了父類的方法 //自己的方法 多態(tài) SuperMan.prototype.fly=function(){ console.log("我會飛"); } var chaoren=new SuperMan("大剛",24,"男","大")es6方法
ES6 中有 class 語法。值得注意是,這里的 class 不是新的對象繼承模型,它只是原型鏈的語法糖表現(xiàn)形式。
//1.es6提供了類來創(chuàng)建面向?qū)ο缶幊? class Student{ constructor(name,age){ this.name=name; this.age=age; } run(){ console.log(this.name+" 跑啊跑") } } class SuperMan extends Student{ constructor(name,age,xh){ super(name,age); //同上call this.xh=xh; } eat(obejectName){ console.log(this.name+" 喜歡吃"+obejectName) } get xm(){ return this.name } set xm(value){ //console.log(value) //設(shè)置xm屬性 this.name=value; } static shangxue(){ console.log("快快上學(xué)去"); //類的方法(只能類用),靜態(tài)方法,對象實例不能用 } } let student1 = new Student("咪咪",18); let student2 = new SuperMan("小明",21,007) student2.eat("蘋果"); //set get 方法 console.log(student2.xm) //get 調(diào)用方法不用括號(); get獲取 student2.xm="小紅" console.log(student2.xm) // student2.shangxue() SuperMan.shangxue();
函數(shù)中使用 static 關(guān)鍵詞定義構(gòu)造函數(shù)的的方法和屬性:
ES6 中有 class 語法。值得注意是,這里的 class 不是新的對象繼承模型,它只是原型鏈的語法糖表現(xiàn)形式。
函數(shù)中使用 static 關(guān)鍵詞定義構(gòu)造函數(shù)的的方法和屬性
上面代碼首先用class定義了一個“類”,可以看到里面有一個constructor方法,這就是構(gòu)造方法,而this關(guān)鍵字則代表實例對象。簡單地說,constructor內(nèi)定義的方法和屬性是實例對象自己的,而constructor外定義的方法和屬性則是所有實例對象可以共享的。
Class之間可以通過extends關(guān)鍵字實現(xiàn)繼承,這比ES5的通過修改原型鏈實現(xiàn)繼承,要清晰和方便很多。上面定義了一個Cat類,該類通過extends關(guān)鍵字,繼承了Animal類的所有屬性和方法。
super關(guān)鍵字,它指代父類的實例(即父類的this對象)。子類必須在constructor方法中調(diào)用super方法,否則新建實例時會報錯。這是因為子類沒有自己的this對象,而是繼承父類的this對象,然后對其進行加工。如果不調(diào)用super方法,子類就得不到this對象。
關(guān)鍵字 class, extends, super
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/84092.html
es6知識總結(jié)--3 上午發(fā)表了一個總結(jié)覺得還是把自己的了解做成一個小系列吧,明天把那個總結(jié)一下! es6對咱們es3,es5的數(shù)據(jù)類型進行了升級下邊說新APIs!js數(shù)據(jù)類型有Number、String 、oject、Boolean、Null、Undefined六種數(shù)據(jù)類型 ! 下邊介紹 Math、Number、String 、Array、Boject的新 APIs Math Number S...
摘要:知識點總結(jié)一,,能重復(fù)聲明,有前置功能。淺拷貝一個數(shù)組設(shè)置原型。永遠是唯一的,不可能和別的重復(fù),可以阻止對象的屬性被篡改前面不能使用操作符。和的區(qū)別鍵名可以是任何數(shù)據(jù)類型初始化的時候必須一次性指定鍵名和鍵值。 es6知識點總結(jié)(一) let,var,const var:能重復(fù)聲明,有前置功能。 let:有塊級作用域,沒有前置功能,不能重復(fù)聲明。 const:有塊級作用域,用來聲明常量(...
摘要:感覺對我這種沒實習(xí)沒工作的新手,雖然一些高級的功能暫時用不上,但是一些基礎(chǔ)的知識還是為平時的開發(fā)提供了巨大的便利。學(xué)習(xí)告一段落,現(xiàn)在結(jié)合平時的開發(fā),總結(jié)一些常用的知識。日常開發(fā)中,塊級作用域中使用的變量,盡量使用或者聲明。使用時,進行合并。 很早之前就學(xué)過TypeScript和ES6,后來做項目的時候零零散散用了些。這幾天又系統(tǒng)地把ES6的知識看了一遍。感覺對我這種沒實習(xí)沒工作的新手,...
摘要:常用知識總結(jié)之前總結(jié)了中的一些知識點。在年正式發(fā)布了,簡稱,又稱為。作為構(gòu)造函數(shù)的語法糖,同時有屬性和屬性,因此同時存在兩條繼承鏈。子類的屬性,表示構(gòu)造函數(shù)的繼承,總是指向父類。 ES6常用知識總結(jié) 之前總結(jié)了es5中js的一些知識點。這段時間看了石川blue老師講解的es6課程,結(jié)合阮一峰老師的es6教程,隨手做了一些筆記和總結(jié)分享給大家。內(nèi)容還是es6主要的知識點,基本沒有什么創(chuàng)新...
摘要:常用知識總結(jié)之前總結(jié)了中的一些知識點。在年正式發(fā)布了,簡稱,又稱為。作為構(gòu)造函數(shù)的語法糖,同時有屬性和屬性,因此同時存在兩條繼承鏈。子類的屬性,表示構(gòu)造函數(shù)的繼承,總是指向父類。 ES6常用知識總結(jié) 之前總結(jié)了es5中js的一些知識點。這段時間看了石川blue老師講解的es6課程,結(jié)合阮一峰老師的es6教程,隨手做了一些筆記和總結(jié)分享給大家。內(nèi)容還是es6主要的知識點,基本沒有什么創(chuàng)新...
閱讀 3332·2021-11-22 14:44
閱讀 2536·2019-08-30 14:10
閱讀 2588·2019-08-30 13:12
閱讀 1216·2019-08-29 18:36
閱讀 1340·2019-08-29 16:16
閱讀 3327·2019-08-26 10:33
閱讀 1760·2019-08-23 18:16
閱讀 378·2019-08-23 18:12