無論什么時(shí)候,我們創(chuàng)建的每個(gè)新的函數(shù)都會(huì)有一個(gè)prototype(原型)屬性,這個(gè)屬性是一個(gè)指針,會(huì)指向一個(gè)對(duì)象,即該函數(shù)的原型對(duì)象。在默認(rèn)的情況下,所以的原型對(duì)象都會(huì)自動(dòng)獲得一個(gè)constructor屬性,可以叫構(gòu)造器屬性,也可以叫構(gòu)造函數(shù)屬性,這個(gè)屬性是一個(gè)指向prototype屬性所在函數(shù)的指針.如下圖所示:
當(dāng)讀取某個(gè)對(duì)象的某個(gè)屬性時(shí),都會(huì)先從對(duì)象實(shí)例本身開始檢索,如果沒有,再到該函數(shù)的原型中去查找。
雖然我們可以通過對(duì)象實(shí)例來訪問原型中的值,但是卻不能通過對(duì)象實(shí)例重寫原型中的值。如果在實(shí)例中,添加了一個(gè)與原型中相同名字的屬性,該屬性就會(huì)屏蔽掉原型中的那個(gè)屬性,即使我們把這個(gè)屬性設(shè)為null,也不會(huì)恢復(fù)其指向原型的連接,不過,使用delete操作符可以完全解除實(shí)例屬性的屏蔽,使其重新恢復(fù)指向原型的連接。
1.構(gòu)造函數(shù)名.prototype.isPrototypeOf(實(shí)例化對(duì)象名); 用來判斷實(shí)例化對(duì)象里是否有指向原型對(duì)象的指針[prototype],如果有返回true;
2.Object.getPrototypeOf(); 這個(gè)方法用來返回[[prototype]]的值。例如:
alert(Object.getPrototypeOf(person1)==Person.prototype); //true alert(Object.getPrototypeOf(person2).name); //"Nicholas"
3.hasOwnProperty()方法可以用來檢測(cè)一個(gè)屬性是否存在于實(shí)例中,還是存在于原型中。只有給定屬性存在于對(duì)象實(shí)例中,才會(huì)返回true.
4.原型和in操作符
有兩種方式使用in操作符,多帶帶使用和在for-in循環(huán)中使用。多帶帶使用時(shí),in操作符會(huì)在通過對(duì)象能夠給定屬性時(shí)返回true。無論是在原型中還是實(shí)例中。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/88462.html
摘要:探索是如何判斷的表達(dá)式如果函數(shù)的顯式原型對(duì)象在對(duì)象的隱式原型鏈上,返回,否則返回是通過自己產(chǎn)生的實(shí)例案例案例重要注意的顯示原型和隱式原型是一樣的。面試題測(cè)試題測(cè)試題報(bào)錯(cuò)對(duì)照下圖理解 原型與原型鏈深入理解(圖解) 原型(prototype) 函數(shù)的 prototype 屬性(圖) 每個(gè)函數(shù)都有一個(gè)prototype屬性,它默認(rèn)指向一個(gè)Object空對(duì)象(即稱為:原型對(duì)象) 原型對(duì)象中有...
摘要:構(gòu)造函數(shù)實(shí)例和原型的概念和關(guān)系每個(gè)函數(shù)都屬于對(duì)象,都會(huì)有一個(gè)屬性叫。這也是繼承的依據(jù)。這樣一來,原型找不到構(gòu)造函數(shù),這是非常蛋疼的事情,違反了原型鏈的定義啊。所以現(xiàn)在子對(duì)象原型和父對(duì)象原型是就建立關(guān)系了。 構(gòu)造函數(shù)、實(shí)例和原型的概念和關(guān)系 每個(gè)函數(shù)都屬于對(duì)象,都會(huì)有一個(gè)屬性叫prototype。這個(gè)屬性指向一個(gè)對(duì)象,我們把他叫做當(dāng)前函數(shù)的原型對(duì)象。原型對(duì)象下面有個(gè)屬性叫construc...
摘要:構(gòu)造函數(shù)的屬性指向原型對(duì)象原型對(duì)象的屬性指向構(gòu)造函數(shù)實(shí)例對(duì)象的指向原型對(duì)象所有引用類型默認(rèn)都繼承了,而這個(gè)繼承也是通過原型鏈實(shí)現(xiàn)的。第一種方式是使用操作符,只要用這個(gè)操作符來測(cè)試實(shí)例與原型鏈中出現(xiàn)過的構(gòu)造函數(shù),結(jié)果就會(huì)返回。 理解對(duì)象 首先對(duì)象的定義是:無序?qū)傩缘募?,其屬性可以包含基本值、?duì)象或者函數(shù)。嚴(yán)格來講,這就相當(dāng)于說對(duì)象是一組沒有特定順序的值。對(duì)象的每個(gè)屬性或方法都有一個(gè)名...
摘要:我們畫張圖來表示圖中這條紅色的線就是原型鏈。我們把方法放到實(shí)例的原型對(duì)象上面,也就是上面來供所有實(shí)例使用小明小紅用圖表示補(bǔ)充說一下我的經(jīng)歷,一開始理解原型鏈時(shí),一直在在這個(gè)三個(gè)屬性中繞來繞去。 一直以來對(duì)于JavaScript 的原型鏈的概念,始終有些東西有一種模糊感,最近剛好有時(shí)間就塌下心認(rèn)真的把《JavaScript高級(jí)程序設(shè)計(jì)》中相關(guān)內(nèi)容認(rèn)真讀了一遍,也查看了很多網(wǎng)上很多資料,以...
摘要:之前有朋友問怎么去理解原型和原型鏈的問題。理解原型鏈的小技巧將箭頭視作泛化子類到父類關(guān)系那么圖中所有的虛線將構(gòu)成一個(gè)繼承層級(jí),而實(shí)線表示屬性引用。原型鏈?zhǔn)菍?shí)現(xiàn)繼承的重要方式,原型鏈的形成是真正是靠而非。 之前有朋友問怎么去理解原型和原型鏈的問題。這個(gè)問題,在面試中,很多同學(xué)經(jīng)常都會(huì)遇到。這里給大家講講,方便大家記憶。 JavaScript的特點(diǎn)JavaScript是一門直譯式腳本...
摘要:之前有朋友問怎么去理解原型和原型鏈的問題。理解原型鏈的小技巧將箭頭視作泛化子類到父類關(guān)系那么圖中所有的虛線將構(gòu)成一個(gè)繼承層級(jí),而實(shí)線表示屬性引用。原型鏈?zhǔn)菍?shí)現(xiàn)繼承的重要方式,原型鏈的形成是真正是靠而非。 之前有朋友問怎么去理解原型和原型鏈的問題。這個(gè)問題,在面試中,很多同學(xué)經(jīng)常都會(huì)遇到。這里給大家講講,方便大家記憶。 JavaScript的特點(diǎn)JavaScript是一門直譯式腳本...
閱讀 2902·2021-11-18 10:02
閱讀 3773·2021-11-15 17:59
閱讀 2374·2021-09-06 15:00
閱讀 3411·2019-08-29 16:58
閱讀 1131·2019-08-26 10:34
閱讀 1656·2019-08-26 10:15
閱讀 1363·2019-08-26 10:11
閱讀 2792·2019-08-23 18:33