1.最簡單的類
function
person()
var p=
newperson()
;alert
(p.name)
;
2.建構函式和原型類裡面增加方法
function
person()
/**原型鏈上的屬性會被多個例項共享,但是建構函式不會**/
person.prototype.***=
"man"
;person.prototype.
work
=function()
}var p=
newperson()
;p.run(
);
3.類裡面的靜態方法(與例項方法相對,例項方法就是必須要先建立例項,然後才能呼叫的方法,而靜態方法則不需要先建立例項)
function
person()
/**原型鏈上的屬性會被多個例項共享,但是建構函式不會**/
person.prototype.***=
"man"
;person.prototype.
work
=function()
person.
getinfo()
}/**呼叫靜態方法**/
person.
getinfo()
;
4.繼承
function
person()
/**原型鏈上的屬性會被多個例項共享,但是建構函式不會**/
person.prototype.***=
"man"
;person.prototype.
work
=function()
function
web(
)var w=
newweb()
;w.run*()
;w.work()
;/**會報錯!!!!,物件冒充的繼承形式可以繼承建構函式,但是不能繼承原型鏈中的函式**/
原型鏈實現繼承可以繼承建構函式,也可以繼承原型鏈中的函式
function
person()
/**原型鏈上的屬性會被多個例項共享,但是建構函式不會**/
person.prototype.***=
"man"
;person.prototype.
work
=function()
function
web(
)web.prototype=
newperson()
;var w=
newweb()
;w.run();
//ok
w.work()
;//ok
但是也帶來了乙個問題:例項化的子類沒辦法給父類傳參
function
person
(name,age)
/**原型鏈上的屬性會被多個例項共享,但是建構函式不會**/
person.prototype.***=
"man"
;person.prototype.
work
=function()
function
web(
)web.prototype=
newperson()
;var w=
newweb
("zhangsan",21
);w.run()
;//erro
web類繼承person類原型鏈+物件冒充的組合繼承模式
function
person
(name,age)
/**原型鏈上的屬性會被多個例項共享,但是建構函式不會**/
person.prototype.***=
"man"
;person.prototype.
work
=function()
function
web(
)web.prototype=
newperson()
;//原型鏈!!!!
var w=
newweb
("zhangsan",21
);w.run()
;//erro
web類繼承person類原型鏈+物件冒充的組合繼承的另一種模式
function
person
(name,age)
/**原型鏈上的屬性會被多個例項共享,但是建構函式不會**/
person.prototype.***=
"man"
;person.prototype.
work
=function()
function
web(
)web.prototype= person.prototype;
//另一種模式!!!
var w=
newweb
("zhangsan",21
);w.run()
;
1.定義類
class
person
/**這一段跟es5定義乙個簡單類的作用相同**/
run():
void
}var p=
newperson
("zhangsan");
p.run()
;
2.類的繼承(extend,super)
class
person
/**這一段跟es5定義乙個簡單類的作用相同**/
run(
):string
}var p=
newperson
("王五");
//例項建立後,王五傳給類的建構函式,然後傳給類的name賦值
alert
(p.run()
);
寫乙個web繼承person
class
webextends
person
var w=
newweb
("zhangsan");
//這會報錯!!!
正確寫法
class
webextends
person
}var w=
newweb
("zhangsan"
);
子類可以寫同名方法,子類呼叫時,先檢查子類有沒有該方法,沒有再繼承父類。
子類可以寫自己的方法
class
webextends
person
work()
:string
}var w=
newweb
("zhangsan");
w.work()
;
3.類的修飾符
ts提供了三種修飾符,如下表:
修飾符特點
public
公有,在當前類的子類,以及類外面均可以使用
protect
保護,在當前類,子類可以使用,在類外不能使用
privatet
私有,只能在當前類中使用,在子類,父類可以,類外不能使用
注:如果不加修飾符,預設為public屬性
4.類的靜態方法和靜態屬性
class
webextends
person
work()
:string
static
print()
}var w=
newweb
("zhangsan");
w.work()
;//先建立例項,才能呼叫例項方法
person.
print()
;//靜態方法的呼叫
5.類的多型
多型:父類定義乙個方法卻不實現,讓繼承它的多個子類實現該方法,並且每乙個子類表現不一樣。多型屬於繼承
class
animal
eat()}
class
dog extends animal
eat()}
class
cat extends animal
eat(
)}
6.抽象類
1.使用abstract關鍵字來定義抽象方法和抽象類
2.抽象類不能被例項化,它提供乙個基類,也不能給出具體的實現,而在其子類中必需給出具體實現
3.抽象方法必須放在抽象類中
4.抽象類,必須(最好)包含抽象方法
//定義抽象lei
abstract class
animal
typescript學習筆記(二)
class obj 繼承 class father class son extends father let man new father man.move man.run 當子類和父類中有建構函式時,子類在呼叫this前必須執行super 這句語句會執行基類的建構函式 public,private...
Typescript學習筆記
物件導向特性 類類的宣告 用class關鍵字 加類名 class person 類宣告完之後就可以被例項化了,類相當於乙個模子.name string eat var p1 new person p1.name batman p1.eat var p2 new person p2.name supe...
typescript學習筆記
1,ts是js的超集,ts是強型別語言。ts比js入門更難。ts的物件導向寫法比js更優雅。ts更適合團隊協作。2,宣告變數篇。3,宣告函式篇。4,物件導向篇。4.1,子類繼承父類 extends 繼承多個介面 implements。4.2,this表示當前物件,super表示父類物件。子類不寫co...