一.對象
(1)簡寫
①屬性
var obj = {uname,uage};
②方法
var obj = {
? ? ? ? run(){}
? ? }
(2)使用...合并對象
var obj1 = {a:1,b:3}
var obj2 = {...obj1};
(3)is
①類方法(靜態(tài)方法)
? ? var obj3 = {};
? ? var obj4 = {};
? ? var obj5 = obj3;
? ? console.log(Object.is(obj3,obj4));
? ? console.log(Object.is(obj3,obj5));
(4)assign
①淺拷貝 是一個靜態(tài)方法
? ? var tObj = {}
? ? var sObj = {a:1,b:2};
? ? Object.assign(tObj,sObj);
? ? console.log(tObj);
類
①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("我要學(xué)到很多知識");
? ? ? ? }
? ? ? ? study(){console.log("好好學(xué)習(xí)")}
? ? }
? ? //extends 關(guān)鍵字? 可用于繼承
? ? class TangZhi extends Student{
? ? ? ? constructor() {
? ? ? ? ? ? //使用父類的構(gòu)造函數(shù)
? ? ? ? ? ? super();
? ? ? ? ? ? console.log("我得學(xué)好了 找個合心的工作");
? ? ? ? }
? ? }
? ? 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";