1.首先我們先來看幾個概念。
封裝:將描述同乙個東西的屬性和方法,定義在乙個物件中。
繼承:父物件中的屬性和方法,子物件可以直接使用。
多型:同乙個物件,在不同情況下,呈現不同的狀態。
2.如何定義建構函式?
function 建構函式名(引數...) }
接下來是利用這個建構函式建立物件:
var obj=new 建構函式名(引數...)
3.js中一切繼承都是利用原型物件實現的,
原型物件:每個函式都有乙個原型物件,而建構函式的原型物件負責儲存所有子物件共享的成員。
因此所有子物件共享的方法,都應該定義在建構函式的原型物件中。
4.我們來看幾個方法。
(1).判斷自有屬性:obj.hasownprooerty("屬性名")
(2).獲得任意物件的父級原型物件:object.getpropertyof(子物件)
(3).判斷乙個prototype物件是否存在於另乙個物件的原型鏈中:父物件.isprototypeof(子物件) 返回布林值
5.例子,下面我們來看乙個關於繼承的例子,不多說,直接上**,注釋很清晰。
functionflyer(fname,speed)}}varbird=newflyer("小鳥"
,40);
//例項化上面的建構函式,並且傳入引數,注意用
newbird.fly();
//呼叫建構函式裡面的
fly方法
functionplane(fname,speed,capacity)
this.capacity=capacity;
//定義自己的
capacity
屬性if((!plane.prototype.hasownproperty("fly")))
}}vara380=newplane("a380"
,1000
,555);
//例項化
plane
方法a380.fly();
//呼叫
plane
裡面的fly
方法,如果自己的原型有則用自己的,否則會用
flyer
建構函式裡面的
JS複習 繼承 原型鏈
繼承 介面繼承和實現繼承。介面繼承只繼承方法簽名,而實現繼承則繼承實際的方法。由於函式沒有簽名,在esmascript中無法實現介面繼承。esmascript只支援實現繼承,而且其實現繼承主要是依靠 原型鏈來實現的。原型鏈 基本思想 利用原型讓乙個引用型別繼承另乙個引用型別的屬性和方法。建構函式 原...
關於js原型繼承
js的每個類都有乙個prototype物件 訪問物件的屬性時,會先訪問到物件自身是否有定義這個屬性 如果沒有定義,就會去訪問物件所屬型別的prototype物件是否有此屬性 原型繼承就是把型別的prototype指向乙個父類的新物件,這樣每派生乙個新類出來都會構造乙個新的父類物件作為原型,這個物件和...
關於js原型鏈繼承的一些複習
1 function person name,age 7 89 person.prototype.race function 12 13 let a new person wangwu 99 14console.log a.age 15a.run 16 a.race 1.靜態繼承 person.si...