溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

js中原型,原型鏈的學(xué)習(xí)與認識

發(fā)布時間:2020-06-21 14:14:09 來源:網(wǎng)絡(luò) 閱讀:581 作者:蝸牛oscersong 欄目:開發(fā)技術(shù)

原型的含義:如果構(gòu)造器有個原型對象A,則由構(gòu)造函數(shù)創(chuàng)建的實例都必然復(fù)制于A。原型也是一個對象,原型可以在運行時獲得和改變。可以增加屬性到原型上或者刪除原型上已經(jīng)存在的屬性。原型對象是用來實現(xiàn)繼承的。

2.prototype屬性,是每個函數(shù)自帶的屬性,(所有類型的構(gòu)造函數(shù)也是函數(shù)),prototype是一個包含constructor屬性的Object對象,其中constructor屬性保存了指向function的一個引用。

3.prototype上的屬性可以被所有實例所共享,是因為每個實例都有一個_proto_屬性。

4原型鏈:Js中的所有對象(undefined,null除外)都有一個內(nèi)置的`prototype`(_proto_)屬性指向它的“父類”的prototype.把這個有_proto_串起來的直到Object.prototype.protonull的鏈叫做原型鏈.

5.function Fun(){

   //code

}

這個函數(shù)內(nèi)部會執(zhí)行下面幾個動作:

   為該函數(shù)添加一個原型(即prototype)屬性,為prototype對象額外添加一個constructor屬性,并且該屬性保存指向函數(shù)Fun()的一個引用。

var obj = new Fun();當(dāng)使用構(gòu)造函數(shù)來創(chuàng)建實例對象的時候,對象的實例內(nèi)部會自動保存一個指向其構(gòu)造函數(shù)的prototype對象的一個屬性_proto_,所以我們每一個對象實例中就可以訪問構(gòu)造函數(shù)的prototype所有的屬性和方法。 

以下面的這個例子來說明,原型的作用,以及原型鏈的體現(xiàn)

function CreatePerson(name,age,job){
 this.name = name;
 this.age = age;
 this.job = job;
 }
 CreatePerson.prototype.firstname = "xi";
 CreatePerson.prototype.getName = function() {
 alert(this.name);
 };
 var per1 = new CreatePerson("xixi",22,"SE"); 
 var per2 = new CreatePerson("xiyin",23,"FF");

CreatePerson.prototype設(shè)置了一個函數(shù)對象的屬性firstname,和一個方法getName(),那CreatePerson實例(例中:per1,per2)出來的普通對象就繼承了這些屬性和方法,這就是原型的作用。

用一副圖來說明理解這整個過程,圖如下:

js中原型,原型鏈的學(xué)習(xí)與認識

   


向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI