您好,登錄后才能下訂單哦!
這篇“es6原型鏈?zhǔn)鞘裁醇霸趺磳?shí)現(xiàn)”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來(lái)看看這篇“es6原型鏈?zhǔn)鞘裁醇霸趺磳?shí)現(xiàn)”文章吧。
原型鏈,簡(jiǎn)單理解就是原型組成的鏈。當(dāng)訪問(wèn)一個(gè)對(duì)象的某個(gè)屬性時(shí),會(huì)先在這個(gè)對(duì)象本身屬性上查找,如果沒(méi)有找到,則會(huì)去它的__proto__隱式原型上查找,即它的構(gòu)造函數(shù)的prototype,如果還沒(méi)有找到就會(huì)再在構(gòu)造函數(shù)的prototype的__proto__中查找,這樣一層一層向上查找就會(huì)形成一個(gè)鏈?zhǔn)浇Y(jié)構(gòu),被稱為原型鏈。
在JS中,每個(gè)函數(shù)在被創(chuàng)建的時(shí)候就會(huì)有一個(gè) prototype屬性,這個(gè)屬性是一個(gè)指針,指向一個(gè)對(duì)象,而這個(gè)對(duì)象就是這個(gè)函數(shù)的原型對(duì)象(也就是原型),它是用來(lái)共享所有實(shí)例的屬性和方法的地方,所以
原型其實(shí)就是函數(shù)的伴生體
(與生俱來(lái)的)
var a = [1, 2, 3, 4, 5];
a.__proto__ === Array.prototype; // true
原型鏈,簡(jiǎn)單理解就是原型組成的鏈。當(dāng)訪問(wèn)一個(gè)對(duì)象的某個(gè)屬性時(shí),會(huì)先在這個(gè)對(duì)象本身屬性上查找,如果沒(méi)有找到,則會(huì)去它的__proto__隱式原型上查找,即它的構(gòu)造函數(shù)的prototype,如果還沒(méi)有找到就會(huì)再在構(gòu)造函數(shù)的prototype的__proto__中查找,這樣一層一層向上查找就會(huì)形成一個(gè)鏈?zhǔn)浇Y(jié)構(gòu),我們稱為
原型鏈
。
創(chuàng)建一個(gè)構(gòu)造函數(shù):
function Person (name) {
this.name = name
}
var cheng = new Person('Cheng');
var lin = new Person('Lin');
打印cheng和lin,可以看到兩個(gè)對(duì)象中都分別存在一個(gè)__proto__屬性
然后發(fā)現(xiàn)
console.log(cheng.__proto__ === lin.__proto__); // true
那么實(shí)例對(duì)象的這個(gè)__proto__屬性到底是什么玩意?
console.log(cheng.__proto__ === Person.prototype); // true
console.log(lin.__proto__ === Person.prototype); // true
小結(jié):實(shí)例對(duì)象有一個(gè)不可枚舉的屬性 proto,這個(gè)屬性是一個(gè)指針,指向了其構(gòu)造函數(shù)的prototype也就是原型對(duì)象,實(shí)例可以通過(guò) proto 訪問(wèn)到構(gòu)造函數(shù)的原型上的方法
簡(jiǎn)單來(lái)說(shuō),實(shí)例對(duì)象的 __proto__ 指向構(gòu)造函數(shù)的 prototype
那么,這個(gè)構(gòu)造函數(shù)的原型是什么呢?
打印Person.prototype,可以看到也存在一個(gè)__proto__屬性
console.log(Person.prototype.__proto__ === Object.prototype)
小結(jié):函數(shù)的原型本質(zhì)就是一個(gè)普通對(duì)象,所以他是來(lái)自O(shè)bject的實(shí)例,因此,原型對(duì)象的 proto 屬性指向Object.prototype。
再往下找Object.prototype的__proto__是指向哪里呢?
最后發(fā)現(xiàn)是指向null
小結(jié):Javascript中任意數(shù)據(jù)都能沿著自己的原型鏈最終找到Object.prototype
以上就是關(guān)于“es6原型鏈?zhǔn)鞘裁醇霸趺磳?shí)現(xiàn)”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。