複習 js之屬性與繼承

2022-08-27 11:44:50 字數 1097 閱讀 8363

js是函式第一型的語言,在下面使用函式來建立物件。

一、屬性

1.私有屬性

在函式中,使用var或function宣告來維持私有屬性(包括普通變數和方法)

2.共有屬性

共有屬性採用this.attr的形式

3.原型屬性

以objname.prototype.attr設定的屬性,即在原型物件上新增的屬性

4.類屬性

objname.attr設定的屬性

例子:function

obj()     

this

.d =

function

()}    

varo 

=new

obj();

document.write(o.a+"

"+o.b+""

+o.c+"

"+o.d());

得到結果: undifined    2    undifined    4

二、繼承

1.構造繼承

function

a()function

b()缺點:不能繼承原型屬性

2.原型繼承

方法:直接只用物件的prototype屬性設定父物件(非父類)

b.prototype 

=new

a();

缺點:修改了子物件的constructor屬性;子類建構函式引數傳遞的問題;只能實現單繼承;被迫例項化父類,有很多負作用

3.例項繼承

基於的思想:若建構函式的返回值為值型別(沒有寫return的返回undefined),new只是初始化this傳遞進來的值;若建構函式返回乙個引用型別,則new返回的引用型別所指的物件

function

b()優點:能夠對屬性進行擴充

4.clone法

思路:使用自定義的clone把父類的所有屬性copy乙份(來個深度轉殖,包括prototype屬性)

function

clone(obj)

return

newobj;

}

JS 本地屬性與繼承屬性

判斷是否擁有某種屬性 1 in 運算子 varobj alert name inobj true alert tostring inobj true 2 hasownproperty方法 varobj obj.hasownproperty name true obj.hasownproperty t...

JS複習 繼承 原型鏈

繼承 介面繼承和實現繼承。介面繼承只繼承方法簽名,而實現繼承則繼承實際的方法。由於函式沒有簽名,在esmascript中無法實現介面繼承。esmascript只支援實現繼承,而且其實現繼承主要是依靠 原型鏈來實現的。原型鏈 基本思想 利用原型讓乙個引用型別繼承另乙個引用型別的屬性和方法。建構函式 原...

js學習之繼承與列舉

js學習之繼承與列舉 首先就是明白繼承的幾種方式 1.傳統方式 原型鏈,其缺點為過多的繼承了一些不需要的東西。這個例子就是原型鏈的繼承方式。2.借用建構函式的方法。不能繼承借用建構函式的原型 每呼叫建構函式都會多用乙個函式 這個例子就是借用建構函式的方式來實現繼承,這種用法主要用於當乙個方法完全覆蓋...