您好,登錄后才能下訂單哦!
原型的含義:如果構(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.proto為null的鏈叫做原型鏈.
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)出來的普通對象就繼承了這些屬性和方法,這就是原型的作用。
用一副圖來說明理解這整個過程,圖如下:
免責(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)容。