可計算的成員名
getter和setter
object.defineproperty 可定義某個物件成員屬性的讀取和設定
使用getter和setter控制的屬性,不在原型上
靜態成員
建構函式本身的成員
使用static關鍵字定義的成員即靜態成員
字段初始化器(es7)
注意:1). 使用static的字段初始化器,新增的是靜態成員
2). 沒有使用static的字段初始化器,新增的成員位於物件上
3). 箭頭函式在字段初始化器位置上,指向當前物件
類表示式
橫切關注點
裝飾器的本質是乙個函式
const printname =
"print"
;class
animal
//建立乙個age屬性,並給它加上getter,讀取該屬性時,會執行該函式
getage()
//建立乙個age屬性,並給它加上setter,給該屬性賦值時,會執行該函式
setage
(age)
if(age <0)
else
if(age >
1000
)this
._age = age;
}[printname]()
`); console.
log(
`【名字】:$`
);console.
log(
`【年齡】:$`
);}}
var a =
newanimal
("狗"
,"旺財",3
);console.
log(a)
如果兩個類a和b,如果可以描述為:b 是 a,則,a和b形成繼承關係
如果b是a,則:
b繼承自a
a派生b
b是a的子類
a是b的父類
如果a是b的父類,則b會自動擁有a中的所有例項成員。
新的關鍵字:
注意:es6要求,如果定義了constructor,並且該類是子類,則必須在constructor的第一行手動呼叫父類的建構函式
如果子類不寫constructor,則會有預設的構造器,該構造器需要的引數和父類一致,並且自動呼叫父類構造器
【冷知識】
正常情況下,this的指向,this始終指向具體的類的物件
class
animal
this
.type = type;
this
.name = name;
this
.age = age;
this
.*** = ***;
}print()
`); console.
log(
`【名字】:$`
);console.
log(
`【年齡】:$`
);console.
log(
`【性別】:$`
);}jiao()
}class
dogextends
animal
print()
`);}
//同名方法,會覆蓋父類
jiao()
}//下面的**邏輯有誤
const a =
newdog
("旺財",3
,"公")a.
print()
;
function
animal
(type, name, age, ***)
animal.prototype.
print
=function()
`); console.
log(
`【名字】:$`
);console.
log(
`【年齡】:$`
);console.
log(
`【性別】:$`
);}function
dog(name, age, ***)
object.
setprototypeof
(dog.prototype, animal.prototype)
;const d =
newdog
("旺財",3
,"公");
d.print()
;console.
log(d)
;
class
animal
print()
`); console.
log(
`【名字】:$`
);console.
log(
`【年齡】:$`
);console.
log(
`【性別】:$`
);}jiao()
}class
dogextends
animal
print()
`);}
//同名方法,會覆蓋父類
jiao()
}const d =
newdog
("旺財",3
,"公");
d.print()
;console.
log(d)
d.jiao()
;
es6 類的繼承
function animal name animal.prototype.drink function animal.prototype.eat function item function dog name,breed animal.prototype dog.prototype animal....
ES6 類的繼承
類的繼承 super 關鍵字 子類通過 extends 關鍵字來繼承父類的所有屬性和方法 子類必須在constructor中呼叫super方法,否則新建例項會報錯 es5的繼承中,實質是先創造子類的例項物件this,然後再將父類的方法 屬性新增到this上面。es6的繼承中,實質是先創造父類的例項物...
ES6類的繼承
es6 引入了關鍵字class來定義乙個類,constructor是構造方法,this代表例項物件。constructor相當於python的init而this則相當於self 類之間通過extends繼承,繼承父類的所有屬性和方法。super關鍵字,它代指父類的this物件,子類必須在constr...