類
class關(guān)鍵字
定義類
? /*
? ? * class 關(guān)鍵字 創(chuàng)建類
? ? * */
? ? class Person{}
constructor
構(gòu)造函數(shù)
注意:
1.構(gòu)造函數(shù) 是一個特殊的函數(shù)
在實例化對象(new)的時候 就會自動調(diào)用這個函數(shù)
2.不一定必須實現(xiàn)構(gòu)造函數(shù)->可以省略
如
? /*
? ? * class 關(guān)鍵字 創(chuàng)建類
? ? * */
? ? class Person{}
? ? /*
? ? * ES6 構(gòu)造函數(shù)
? ? * */
? ? class Animation{
? ? ? ? constructor(...args) {
? ? ? ? ? ? console.log(args);
? ? ? ? }
? ? }
? ? new Animation(1,2);
? ? new Person();
屬性
原型屬性
實例屬性
? class ImageView{
? ? ? ? //原型屬性
? ? ? ? path = "";
? ? ? ? constructor() {
? ? ? ? ? ? this.ttt = "實例屬性"
? ? ? ? }
? ? }
set get 方法
防止類中的set get方法的遞歸調(diào)用
? ? ? ? get hname(){
? ? ? ? ? ? return this.hname;
? ? ? ? }
? ? ? ? set hname(_name){
? ? ? ? ? ? console.log(_name);
? ? ? ? ? ? this.hname = _name;
? ? ? ? }
注意 使用set get方法的屬性名前 添加_
? class Hero {
? ? ? ? constructor(_name) {
? ? ? ? ? ? this.hname = _name;
? ? ? ? }
? ? ? ? get hname(){
? ? ? ? ? ? return this._hname;
? ? ? ? }
? ? ? ? set hname(_name){
? ? ? ? ? ? console.log(_name);
? ? ? ? ? ? this._hname = _name;
? ? ? ? }
? ? }
靜態(tài)屬性 靜態(tài)方法
需要使用 static 關(guān)鍵字
? class Weapon{
? ? ? ? static type = "魔法裝";
? ? ? ? static att(){
? ? ? ? ? ? console.log("攻擊")
? ? ? ? }
? ? }
? ? console.log(Weapon.type);
? ? Weapon.att();
繼承
使用extends 實現(xiàn)繼承
super
調(diào)用父類的構(gòu)造函數(shù)
如
? ? class Student{
? ? ? ? constructor() {
? ? ? ? ? ? console.log("我要學到很多知識");
? ? ? ? }
? ? ? ? study(){console.log("好好學習")}
? ? }
? ? //extends 關(guān)鍵字? 可用于繼承
? ? class TangZhi extends Student{
? ? ? ? constructor() {
? ? ? ? ? ? //使用父類的構(gòu)造函數(shù)
? ? ? ? ? ? super();
? ? ? ? ? ? console.log("我得學好了 找個合心的工作");
? ? ? ? }
? ? }
? ? let haoXueSheng = new TangZhi();
? ? haoXueSheng.study();
模塊
把具有相同功能的代碼 組織到一起 ->這一塊 代碼 就可以看成一個模塊
ES6
1.引入js 需要添加type屬性 屬性值是module
<script src="StringTool.js" type="module"></script>
2.導(dǎo)出模塊 導(dǎo)入模塊
導(dǎo)出模塊
export
1.
export {obj999仑性,obj777} 可以同時導(dǎo)出多個 對象
2.導(dǎo)出一個模塊
export default StringTool;
導(dǎo)入模塊
import
1.? ? import {obj999,obj777} from "./StringTool.js"? 可以同時導(dǎo)入多個對象
? ? console.log(obj999)
2.導(dǎo)入一個模塊
import StringTool from "./StringTool.js";
as 給模塊 重命名
export {StringTool as ST}
import {ST} from "./StringTool";