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.借用建構函式的方法。不能繼承借用建構函式的原型 每呼叫建構函式都會多用乙個函式 這個例子就是借用建構函式的方式來實現繼承,這種用法主要用於當乙個方法完全覆蓋...