es5裡邊的類的定義 靜態方法 繼承

2021-10-04 22:07:46 字數 2870 閱讀 8357

es5裡邊的類

面對物件程式語言中都有 「類」 這個概念。類是物件的模板,物件是類的例項。在es6中,類是基於建構函式和原型鏈的,可以從這兩方面來定義類:

1、兩種方式定義類

沒有專門定義類的方法,例如定義乙個person類,可以通過以下兩種方式實現:

第一種方式:建構函式裡邊定義屬性和方法

function

person()

}var p =

newperson()

;console.

log(p.name)

;// 輸出: 張三

p.thing()

// 輸出: 張三來自陝西西安

呼叫這個類,首先進行例項,例項化後繼承了person類的屬性和方法,都可以訪問到

第二種方式:原型鏈上擴充套件屬性和方法

function

person()

;person.prototype.***=

"男";

person.prototype.

work

=function()

console.

log(p.***)

;// 輸出:男

p.work()

// 輸出:張三在工作

注意:原型鏈上的屬性會被多個例項共享,但是建構函式不會。

以上定義的類裡邊的方法,只有將類例項化之後才可以呼叫,還可以在類上直接新增方法,即類的靜態方法:

2、類裡邊的靜態方法

直接給類新增方法:

function

person()

}//新增靜態方法

person.

getinfo

=function()

//呼叫

person.

getinfo()

// 輸出 靜態方法

3、es5 裡邊的繼承(原型鏈、物件冒充組合的繼承方式)

首先定義乙個person類:

function

person()

}person.prototype.***=

"男";

person.prototype.

work

=function()

在定義乙個child類,採用物件冒充繼承的方式:

function

child()

let c =

newchild()

;console.

log(c.name)

;// 輸出 張三

c.thing()

// 輸出 張三來自陝西西安

console.

log(c.***)

// undefined

c.work()

// 報錯: c.work is not a function

由上可以看出,物件冒充可以繼承建構函式裡邊的屬性和方法,但是不能繼承原型鏈上的屬性和方法。

在定義乙個son類,採用原型鏈繼承的方式:

function

son(

)son.prototype =

newperson()

;let s =

newson()

;s.run();

// 輸出 跑步

console.

log(s.name)

;// 輸出 張三

s.work()

;// 輸出 working

console.

log(s.***)

;// 輸出 男

那麼看以下內容,可以知道原型鏈繼承的方式例項化子類的時候沒法給父類傳參

function

person

(name)

}person.prototype.***=

"男"person.prototype.

work

=function()

function

son(name)

son.prototype =

newperson()

;let s =

newson

("張三");

s.run()

// 輸出 undefined在跑步

所以使用原型鏈與建構函式組合的方式:

function

person

(name)

}person.prototype.***=

"男"person.prototype.

work

=function()

function

web(name)

web.prototype =

newperson()

;let w =

newweb

("張");

w.run()

// 輸出 張在跑步

由於,物件冒充是可以實現建構函式上的屬性和方法,使用原型鏈只需要基礎原型鏈上的 屬性方法即可,所以可以做如下修改:

//  web.prototype = new person(); 可以改寫成下邊的方式

web.prototype = person.prototype;

es5中的類和靜態方法

es5中的類和靜態方法 function person name,age 原型鏈上面的屬性和方法可以被多個例項共享 person.prototype.男 person.prototype.sayhello function 靜態方法 person.address function var p new...

es5中的類 原型鏈 靜態方法 繼承

function person name,age 原型鏈上面的屬性和方法 原型鏈上繫結的屬性和方法和建構函式中的有什麼區別 原型鏈上的屬性和方法可以被多個例項共享 person.prototype.男 person.prototype.work function 靜態方法 person.setnam...

ES5陣列的方法

map 對映 語法 陣列.map function item,index,arr item 陣列中每乙個資料 index 索引 arr 原始陣列 foreach 迴圈 陣列.foreach function item,index,arr filter 過濾器 陣列.filter function i...