關於繼承和原型鏈

2021-09-26 00:02:50 字數 2110 閱讀 9965

繼承是父物件的成員,子物件不用重複建立,也可以直接使用 這樣就可以節約記憶體,**重用。那我們什麼時候使用繼承呢?只要一類子物件,都需要相同的甦醒或功能時,只要將相同的屬性和功能僅在父物件中定義一次即可。那我們怎麼使用呢, js中的繼承都是繼承原型物件。原型物件又是什麼呢?它是專門集中儲存一類子物件相同屬性和功能的父物件 同一類子物件所共有的屬性或方法。那我們怎麼定義?在我們建立建構函式的時候,建構函式會自動贈送乙個原型物件。如何在原型物件中新增屬性呢?例子如下:student.prototype.classname = 『大一三班』;。關於原型物件中的方法和屬性的訪問 ,他其實和建構函式的方法是一樣使用的。我們是怎麼在兩種型別中繼承的呢?第一步:定義父型別;第二步:讓子型別原型物件繼承父型別原型物件;第三步:在子類建構函式中借用父型別建構函式(達到請父型別建構函式幫忙初始化屬性結構)。這裡有我自己做的乙個例子:

有獅子、斑馬、鯊魚、海豚四類動物,他們都有年齡、體重這些資訊,並且繁殖後代的方式都是胎生,但是生活方式卻有所不同,獅子和斑馬在陸地上生活,屬於陸生動物,並且他們的撲食方式又不同,獅子靠捕捉其他小動物為生,而斑馬靠食草為生,鯊魚和海豚在水下生活,屬於水生動物。請在確保**的擴充套件性和較少冗餘的情況下建構函式和原型

function animal(name,age,height,breed)

animal.prototype.lifestyle = function()在陸地上生活,屬於陸生動物);

}animal.prototype.modeoflife = function()在水下生活,屬於水生動物);

}function lion(name,age,height,breed)靠捕捉其他小動物為生)}}

object.setprototypeof(lion.prototype,animal.prototype);

function zebra(name,age,height,breed)靠食草為生)}}

object.setprototypeof(zebra.prototype,animal.prototype);

function shark(name,age,height,breed)

object.setprototypeof(shark.prototype,animal.prototype);

function dolphin(name,age,height,breed)

object.setprototypeof(dolphin.prototype,animal.prototype);

var shizi = new lion("獅子",3,100,"胎生");

shizi.lifestyle();

shizi.predation();

var banma = new zebra("斑馬",3,100,"胎生");

banma.lifestyle();

banma.prayon();

var shayu = new shark("鯊魚",3,100,"胎生");

shayu.modeoflife();

var haitun = new dolphin("海豚",3,100,"胎生");

haitun.modeoflife();

首先因為原型本身也是個物件,因此原型物件也有原型,而原型鏈是由多級父元素逐級繼承形成的鏈式結構。那麼還有作用域鏈,這兩個的區別是:原型鏈儲存著所有物件的成員,而作用域鏈儲存所有的變數。原型鏈的作用是控制物件訪問成員的使用順序:優先使用自己的,自己沒有,才延原型鏈向父級查詢。而作用域鏈的作用是控制變數的使用順序:優先使用活動物件(ao)中的區域性變數,區域性中沒有,才去延用作用域鏈向父級作用域查詢。原型鏈的最頂端是object.prototype。而作用域鏈的最頂端是window。那麼我們簡單的來概括這兩個的區別,就是所有不需要"物件."訪問的變數都儲存在作用域鏈中,而所有需要用"物件."訪問的變數都儲存在原型鏈中。 最後,我們是怎麼驗證原型物件的呢,我這裡有乙個例子:

object.getprototypeof(obj) == array.prototype;

console.log(

object.getprototypeof(obj1) == array.prototype,

object.getprototypeof(obj2) == array.prototype

原型 原型鏈和繼承

看一段 就明白了function person nick,age person.prototype.sayname function var p1 newperson byron 20 var p2 newperson casper 25 p1.sayname byron p2.sayname ca...

原型鏈和繼承

原型鏈 它是繼承的主要方法,其基本思想是讓乙個引用型別繼承另外乙個引用型別的屬性和方法。每個建構函式都一有乙個prototype屬性,它指向它的原型物件 原型物件包含了 該建構函式所建立的 所有例項 共享的 屬性和方法 假如讓乙個原型物件等於另外乙個型別的例項,那麼該物件的例項可以訪問另外一種原型的...

原型 原型鏈 繼承

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