對js中關鍵字class類的認識

2021-10-06 19:38:32 字數 3065 閱讀 7156

class可以看做是建構函式的語法糖,class在功能上更加完善

class中原型方法的寫法

class

student

}

直接在大括號裡面新增方法就是新增到原型裡面,對比建構函式在原型中新增方法student.prototype.show=function(){}更加方便

class中新增的原型方法,還有乙個好處就是在遍歷屬性的時候,不會被遍歷(利用for in迴圈遍歷)到,class關鍵字給我們做了處理,而且在class中新增的方法中的this,如果沒有呼叫者,預設為undefined,而不是windon,也即是預設為嚴格模式

關鍵字static的理解

所謂的靜態屬性和方法,就是把建構函式當做物件使用,把屬性和方法寫在建構函式身上

static靜態方法的應用:利用類來管理乙個商品的資訊,可以獲得商品的總價和最貴商品的名字

//使用靜態方法對商品的管理

let goodslist =[,

,,]//先定義乙個類----重點

class

carstatic

createbatch

(data)

static

totalprice

(data)

static

maxprice

(data)

getprice()

getname()

}let car = car.

createbatch

(goodslist)

//這裡得到了每個例項化物件的陣列,map對原來的陣列進行處理返回新陣列

console.

log(car.

maxprice

(car)

.name)

//得到最貴的商品的**名字

console.

log(car.

totalprice

(car)

)//得到所有商品的總價

關鍵字super的理解

super的出現原因:看如下**,當我們自身有父類有相同的方法,我想用父類的方法,在繼承了第一次的時候,我們可以在子類中this.__proto__.show.call(this)使用父類,但是在如果上面還有繼承的時候,這種方法就行不通,會造成this的指向混亂,死迴圈,所有利用super可以輕鬆解決這個問題

//繼承時候兩層的時候可以this--多層不行---所以出現了super,會自動改變this指向

const all =

}const person =

}const p =

} p.

show()

//小凡哈哈

要求:在子類中如果有constructor,則一定要在constrcutor中使用super,而且constructor中有關this的設定都要放到super之後,這樣是為了提高子類的優先順序

先來看為什麼有了constructor就必須要super,我們先從建構函式入手(因為class相當於建構函式的語法糖)

在建構函式總,如果想用繼承父級的屬性,我們一般這麼幹

function

user

(name, age, ***)

function

admin

(...args)

let hd =

newadmin

("小凡",16

,"男"

) console.

log(hd)

class中我們是把為每個物件設定的屬性放到了constructor中,為了要繼承父類的屬性,所以需要執行的是相當於父類函式,也即是constructor這個函式,super的作用就是幫我們執行了這個函式,並改變了this的指向,那為什麼this需要放在super之後呢,我們且看下面的例子

class

parent

}class

children

extends

parent

}let ch =

newchildren

("凡"

) console.

log(ch.name)

//小凡

我們可以看到最後的名字是小凡,而不是凡,確保了子類的優先順序高於父類

利用super可以訪問父類方法

class

parent

}class

children

extends

parent

info()

}}let data =[,

,,]let xf =

newchildren

(data)

console.

log(xf.

info()

)//

方法的重寫,不影響父類的方法,可以向用先在子類中寫乙個父類一樣的方法,然後在子類方法中利用super訪問父類方法,然後拿到父類方法得到的結果修改

C 中struct關鍵字和class關鍵字的區別

剛開始接觸 c 看到 中有struct關鍵字,還以為是用了結構體,結果後來發現 struct 和 class 一樣都用於類的定義,於是把兩者的差別記錄於此。一句話總結 兩者均可用於定義類,唯一的區別是兩者定義的類的預設訪問許可權有差別。其實比兩者差別更重要的是,我很好奇為什麼 c 中會存在兩個用於定...

js中的this關鍵字

普通函式 window functionfn fn window 事件函式 指向事件源 var btn document.queryselector button btn.onclick function 定時器 中也是window setinterval function 1000 預保留this...

JS中的this關鍵字

js中的this代表的是當前行為執行的主體 js中的context代表的是當前行為執行的環境 區域 this是誰和函式在哪定義的和在哪執行的都沒有任何的關係,這和它的執行主體有關。function fn var obj fn window obj.fn obj function sum sum wi...