2021-01-22
阿新 • • 發佈:2021-01-23
技術標籤:javascript
JavaScript面向物件
類constructor建構函式
constructor0方法是類的建構函式(預設方法) ,用於傳遞引數返回例項対象,通過new命令生成対象例項吋自動凋用該方法。如果沒有顯示定義,類內部會自動給我們建立一個constructor();
建立類:
//(1)通過class 關鍵字建立類,類名我們還是習慣性定義首字母大寫
//(2)類裡面有個constructor函式,可以接受傳遞過來的引數,同時返回例項物件
/* (3) constructor 函式只要new生成例項時,就會自動呼叫這個函式,如果我們不寫這個函式,類
也會自動生成這個函式 */
class Star{
constructor(uname,age){
this.uname=uname;
this.age=age;
}
}
//(4) 生成例項new不能省略
/* (5)最後注意語法規範,建立類類名後面不要加小括號生成例項類名後面加小括號,建構函式不需
要加function */
var ldh=new Star("劉德華",19);
var zxy=new Star("張學友" ,18);
console.log(ldh);
console.log(zxy);
類的繼承
class Father {
say() {
console.log("我是爸爸");
}
}
class Son extends Father{//這樣子類就繼承了父類的屬性和方法
say(){
super.say();//super呼叫了父類的方法
console. log("我是兒子");
}
}
var sons=new Son();
sons.say();
//1.継承中,如果例項化子類輸出一個方法,先看子類有沒有這個方法,如果有就先執行子類的
//2.継承中,如果子類裡面沒有,就去査找父類有沒有這個方法,如果有,就執行父類的這個方法(就近原則)
//super關鍵字用於訪問和呼叫物件父類上的函式。可以呼叫父類的建構函式,也可以呼叫父類的普通函式。
super關鍵字用於訪問和呼叫父類上的函式,可以呼叫父類的建構函式,也可以呼叫父類的普通函式
例:super呼叫父類的建構函式
class Father {
constructor(x,y){
this.x=x;
this.y=y;
}
sum1(){
console.log(this.x+this.y);
}
}
class Son extends Father{
constructor(x,y){
//利用super呼叫父類的建構函式而且必須在子類this之前呼叫
super(x,y)
this.x=x;
this.y=y;
}
sum2(){
console.log(this.x-this.y);
}
}
var sons=new Son(5,3);
sons.sum1();
sons.sum2();
利用super呼叫父類的建構函式而且必須在子類this之前
this指向問題
var that;
class Star{
constructor(uname,age){
// constructor裡面的this指向的是建立的例項物件
that=this;
console.log(this);
this.uname=uname;
this.age=age;
this.btn=document.querySelector("button");
this.btn.onclick=this.sing;
}
sing(){
//因為sing被btn呼叫了,所以這個this指向btn
console.log(this);
console.log(that.uname);
}
dance(){
//這個this被son呼叫了,所以this指向例項物件son
console.log(this);
}
}
var son=new Star("劉德華");
son.dance();
1.在ES6中類沒有変量提升,所以必須先定義類,才能通過類例項化物件
//2.類裡面的共有的屬性和方法一定要加this使用.