摘要:是憑空產(chǎn)生的可看作是由產(chǎn)生的可看作是產(chǎn)生的可看作是由自己創(chuàng)建的和原型有關(guān)的測(cè)試一個(gè)對(duì)象在其原型鏈中是否存在一個(gè)構(gòu)造函數(shù)的屬性檢測(cè)是否存在于參數(shù)的原型鏈上得到的原型
JS原型鏈
參考:mdn js秘密花園 hattle的博客
對(duì)于js的原型鏈概念,一直都沒(méi)有一個(gè)清晰的認(rèn)知,最近看了許多參考資料,才算把這一塊內(nèi)容大致弄明白。
在js中,一切皆對(duì)象
每個(gè)對(duì)象都有一個(gè)指向它的原型的的內(nèi)部鏈接(此鏈接還沒(méi)有規(guī)范的訪問(wèn)方式,一般用__proro__代替),這個(gè)原型也有自己的原型,直到每個(gè)對(duì)象的原型為null為止
任意一個(gè)函數(shù)都可以作為構(gòu)造器即var someFun = new AnyFun()
每個(gè)函數(shù)都有一個(gè)prototype屬性,其它對(duì)象沒(méi)有,該屬性也是一個(gè)對(duì)象,該對(duì)象有一個(gè)constructor屬性指向該函數(shù)
使用new去實(shí)例化一個(gè)函數(shù)后,得到的是一個(gè)對(duì)象。該函數(shù)的實(shí)例的原型指向構(gòu)造函數(shù)的prototype屬性
圖示圖片來(lái)自 Hattle的博客
上面圖片可以很好的表明js中原型鏈的關(guān)系。
Object.prototype是憑空產(chǎn)生的
Function.prototype可看作是由Object產(chǎn)生的
Object可看作是Function產(chǎn)生的
Function可看作是由自己創(chuàng)建的
和原型有關(guān)的API
instanceof, 測(cè)試一個(gè)對(duì)象在其原型鏈中是否存在一個(gè)構(gòu)造函數(shù)的 prototype 屬性
`object instanceof constructor`
檢測(cè) constructor.prototype 是否存在于參數(shù) object 的原型鏈上
Object.getPrototypeOf(obj)得到obj的原型
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/80798.html
摘要:原型鏈和對(duì)象的原型是對(duì)象實(shí)例和它的構(gòu)造函數(shù)之間建立的鏈接,它的值是構(gòu)造函數(shù)的。對(duì)象的原型根據(jù)上文提到的構(gòu)造調(diào)用函數(shù)的時(shí)候會(huì)創(chuàng)建一個(gè)新對(duì)象,自動(dòng)將的原型指向構(gòu)造函數(shù)的對(duì)象。 showImg(https://segmentfault.com/img/remote/1460000020185197); JS的原型、原型鏈一直是比較難理解的內(nèi)容,不少初學(xué)者甚至有一定經(jīng)驗(yàn)的老鳥(niǎo)都不一定能完全說(shuō)清...
摘要:從實(shí)現(xiàn)角度分析原型鏈歡迎來(lái)我的博客閱讀從實(shí)現(xiàn)角度分析原型鏈網(wǎng)上介紹原型鏈的優(yōu)質(zhì)文章已經(jīng)有很多了,比如說(shuō)作為補(bǔ)充,就讓我們換個(gè)角度,從實(shí)現(xiàn)來(lái)分析一下吧本文假設(shè)你對(duì)原型鏈已經(jīng)有所了解。 從實(shí)現(xiàn)角度分析js原型鏈 歡迎來(lái)我的博客閱讀:《從實(shí)現(xiàn)角度分析js原型鏈》 網(wǎng)上介紹原型鏈的優(yōu)質(zhì)文章已經(jīng)有很多了,比如說(shuō): https://github.com/mqyqingfeng/Blog/issu...
摘要:相當(dāng)于在用原型繼承編寫(xiě)復(fù)雜代碼前理解原型繼承模型十分重要。同時(shí),還要清楚代碼中原型鏈的長(zhǎng)度,并在必要時(shí)結(jié)束原型鏈,以避免可能存在的性能問(wèn)題。 js是一門(mén)動(dòng)態(tài)語(yǔ)言,js沒(méi)有類(lèi)的概念,ES6 新增了class 關(guān)鍵字,但只是語(yǔ)法糖,JavaScript 仍舊是基于原型。 至于繼承,js的繼承與java這種傳統(tǒng)的繼承不一樣.js是基于原型鏈的繼承. 在javascript里面,每個(gè)對(duì)象都有一...
摘要:圖片描述缺點(diǎn)是無(wú)法實(shí)現(xiàn)多繼承可以在構(gòu)造函數(shù)中,為實(shí)例添加實(shí)例屬性。 對(duì)象的方法 Object.assign() 對(duì)象可以簡(jiǎn)寫(xiě) ,如果 key 和 value 相等則可以簡(jiǎn)寫(xiě) let name = xm; let age = 2; let obj = { name, age, fn(){ // 可以省略函數(shù)關(guān)鍵字和冒號(hào): console.log(2...
摘要:構(gòu)造函數(shù),實(shí)例,原型三者的關(guān)系如下圖構(gòu)造函數(shù)是構(gòu)成整個(gè)原型鏈的關(guān)鍵,是他利用將原型傳給了后代。因此,通過(guò)操縱構(gòu)造函數(shù)的,就能夠操縱原型鏈,從而對(duì)原型鏈進(jìn)行自在的拼接。 要理解js的原型鏈主要就是理清楚以下三者的關(guān)系: 構(gòu)造函數(shù)的protitype屬性 對(duì)象的__proto__屬性 對(duì)象的constructor屬性 在js中,函數(shù)作為一等公民,它是一個(gè)對(duì)象,可以擁有自己的屬性,可...
摘要:二構(gòu)造函數(shù)我們先復(fù)習(xí)一下構(gòu)造函數(shù)的知識(shí)上面的例子中和都是的實(shí)例。這兩個(gè)實(shí)例都有一個(gè)構(gòu)造函數(shù)屬性,該屬性是一個(gè)指針指向。原型鏈其中是對(duì)象的實(shí)例。 一. 普通對(duì)象與函數(shù)對(duì)象 JavaScript 中,萬(wàn)物皆對(duì)象!但對(duì)象也是有區(qū)別的。分為普通對(duì)象和函數(shù)對(duì)象,Object 、Function 是 JS 自帶的函數(shù)對(duì)象。下面舉例說(shuō)明 var o1 = {}; var o2 =new Objec...
閱讀 2385·2021-11-24 10:31
閱讀 3438·2021-11-23 09:51
閱讀 2252·2021-11-15 18:11
閱讀 2398·2021-09-02 15:15
閱讀 2462·2019-08-29 17:02
閱讀 2295·2019-08-29 15:04
閱讀 842·2019-08-29 12:27
閱讀 2866·2019-08-28 18:15