原型 原型鏈與繼承

2022-08-24 16:42:10 字數 1638 閱讀 1112

面試中經常考到物件導向的一些知識,在這記錄一下,如有不對歡迎指正,願在前端的道路上共勉!

一、原型

1.什麼是原型:  簡單說就像css的class一樣,是公用的,給dom元素加個class名就可以公用樣式,那麼原型就相當於css裡面的class,都可以用。

在建構函式建立出來的時候,系統會預設的幫建構函式建立並關聯乙個神秘的物件,這個物件就是原型,建構函式的每乙個例項都可以訪問原型中的成員(一般我們放方法);

2.原型鏈:(原型鏈這個概念常考哦~)  首先呢,正如上面所說的,當函式被new操作符呼叫時,會建立出乙個物件,並且該物件中會有乙個指向其原型物件的秘密鏈結(乙個非標準屬性:_proto_),這樣新建的物件(例項)就可以呼叫相關原型物件中的成員;(咳咳,正題來了哈)但是,原型物件自身也具有物件固有的普遍特徵(它也是個物件),因此,也包含了指向其原型物件的鏈結,因此嘞,就形成了乙個鏈式結構,稱之為原型鏈;

請原諒我畫畫的技術:

二、繼承

1.那麼什麼又是繼承呢:其實就是乙個物件沒有的成員,但是另乙個物件有,給它拿過用;(在現實世界中這好像叫『借』吧)

2.繼承的過程:(這裡引用blue老師的乙個比喻)  你媳婦他媽跟你要100萬,你沒有咋辦?找你爹,你爹也沒有,咋整?找你爹的爹,但是你爹的爹的爹死了,所以你爺爺說家裡沒有,也就是返回null;(其實寫到這裡我內心是崩潰的)

3.繼承方式:

1

//1.混入式繼承,說是混入式有點高大上,其實就是遍歷賦值

2function

person()

56 let obj =};

1213

for( let k in

obj)19}

2021

2223

//2.經典繼承

24 person.prototype =object.create(obj);

2526

//上面的**相當於

27function

create(obj);

29 p.prototype =obj;

30return

newp();

31}

3233

34//

3.借用建構函式,這種方法繼承不過去

35function

person(name,age)

3940 person.prototype.sayhello = function

()43

44function

human(name,age)

4748 let p = new human('jack',18);

49console.log(p);

50 p.sayhello(); //

p.sayhello is not a function

5152

5354

//4.直接替換,會改變obj1的constructor的指向

55 obj1.prototype = obj2.prototype;

原型 原型鏈 繼承

原型 是function物件的乙個屬性,它定義了建構函式 製造出的物件 的公共祖先。通過該建構函式產生的物件,可以繼承該原型的屬性和方法。原型也是物件 這定義有點模糊,用 解釋一下 我們在控制台中列印出了這個,首先son物件的建構函式是foo,但是我們的foo中什麼屬性都沒有,怎麼會出現乙個 pro...

原型 原型鏈 繼承

在 js 中,一切皆物件!下面就讓我們從建立物件開始,逐步學習js中的核心知識 原型,原型鏈,繼承等 1.字面量方式建立物件 var obj var obj1 2.使用 new object 的方式建立物件 var obj2 new object obj2.name 張三 obj2.age 13 o...

原型鏈與繼承

一 原型鏈 基本思想 讓乙個引用型別繼承另乙個引用型別的屬性和方法。建構函式 原型 例項的關係 每個建構函式都有乙個原型物件,原型物件都包含乙個指向建構函式的指標,而例項都包含乙個指向原型物件內部的指標。原型鏈繼承例項 function supertype this.property true su...