TypeScript學習筆記(二)

2021-10-03 23:42:27 字數 4635 閱讀 1406

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...