1. 程式人生 > 其它 >寒假學習——ES6(4)

寒假學習——ES6(4)

寒假學習——ES6(4)

class

  • 在這裡插入圖片描述
<script>
        class Paopao{
           constructor(name,age){
               this.name=name;
               this.age=age;
           }
           eat(){
               console.log("吃吧");
           }
        }
        let hong=new Paopao("lv",98);
        console.log(hong);
    </script>
  • static標註的屬性和方法屬於類不屬於例項物件,要用類名呼叫
<script>
        class Phone{
            static name="手機";
            static change(){
                console.log("我可以改變世界");
            }
        }
        let huawei=new Phone();
        console.log(huawei.name);//undefined
        console.log(Phone.name);//手機
    </script>
  • class的類繼承
 <script>
        class Phone{
            constructor(brand,price){
                this.brand=brand;
                this.price=price;
            }
            call(){
                console.log("用我打電話");
            }
        }
        class smartPhone extends Phone{
            constructor(brand,price,color){
                super(brand,price);//先將父類的建構函式初始化
                this.color=color;
            }
            photo(){
                console.log("拍照");
            }
        }
        const apple=new smartPhone("iphone",6100,"black");
        console.log(apple);
        apple.call();
    </script>

class的get set方法

//注意就是有一個隱含的不用宣告的成員屬性
<script>
        class Phone{
            get price(){
                console.log("價格屬性被讀取");
                return 'i love the new phone';
            }

            set price(value){
                console.log("價格屬性被修改");
            }
        }
        
    
        let p=new Phone();
        p.price;//直接執行裡面的語句
        console.log(p.price);//整個的結果是return的結果
        p.price='free';
        console.log(p);
    </script>

數值擴充套件

<script>
        //二進位制0b開頭八進位制0o開頭十六進位制0x開頭
        let b=0b1010;
        let o=0o222;
        let x=0xfff;
        Number.EPSILON//表示最小精度如果2個數差值小於這個誤差那麼2個數可以看成相等
        Number.isFinite(100)//判斷100是否有限
        Number.isNaN(123)//判斷是否為NaN
        Number.parseInt('123ll')//字串轉化成整數和java的包裝器類似
        Number.isInteger//判斷是否是整數
        Number.trunc(3.5);//將小數抹掉
        Math.sign//判斷是正數還是負數還是0

    </script>

物件方法擴充套件

 <script>
        //1——Object.is判斷2個值是否完全相等
        console.log(Object.is(22,22));//true,和全等號類似,但是它NAN也是相等的,全等號不是
        //2——Object.assign()物件的合併,後面那個與前面那個重名的被覆蓋,不同的並起來
        const config1={
            host:'localhost8080',
            port:3306,
            name:'root',
            pass:'123',
            test:'test'
        };
        const config2={
            host:'http://123.com',
            port:33063,
            name:'123.com',
            pass:'123456',
            test2:'test2'
        }
        console.log(Object.assign(config1,config2));
        //3——Object.setPrototypeOf設定原型物件
        
    </script>
  • 在這裡插入圖片描述

模組化介紹

  • 概念:將一個大的程式檔案拆分成很多小的檔案然後將小檔案組合起來
  • 模組化的優勢
    • 防止命名衝突
    • 程式碼複用
    • 高維護性
  • 模組功能:
    • 2個命令組成:export和import
      • export命令用於規定模組對外的介面(在需要暴露的資料前面加上export即可)
      • import命令用於輸入其他模組提供的功能
 <script type="module">
        import * as newm from "./newm.js";
        console.log(newm);
    </script>


//分別暴露
export let paopao='哈哈哈2048';
export function chui(){
    console.log("吹泡泡");
}

//統一暴露
export{paopao,chui};


//預設暴露
export default{
	paopao='哈哈哈2048';
	chui:function(){
		console.log("吹泡泡");
	}
}
  • 在這裡插入圖片描述

  • 引入模組

//通用匯入
import * as newm from "./newm.js";

//解構賦值形式
import {paopao,chui}  from "./newm.js";//as後面的是別名
import {default as m2} from "./m3.js"

//簡便形式,針對預設暴露
import m3 from "./m3.js"
  • 瀏覽器使用es6模組
//在index頁面寫入js檔案的引入標籤,即利用src屬性引入一個入口檔案
<script src="./test.js" type="module"></script>

//test.js中直接用import語句即可