原型與原型鏈

什么是原型和原型鏈礼饱?

在講這個(gè)之前坏为,我們先把這個(gè)名詞忘掉,不要試圖從字面意思去理解這個(gè)詞镊绪,它只是幾個(gè)漢字匀伏,我們可以把這個(gè)看成[ab]和[abc]。

在這之前我們先來了解一些必要的知識(shí)


數(shù)據(jù)類型

js里 數(shù)據(jù)類型分為 7 種:

string? number? null undefined? object Boolean??symbol??

數(shù)據(jù)類型又分兩種:簡(jiǎn)單數(shù)據(jù)類型 復(fù)雜數(shù)據(jù)類型 蝴韭。 復(fù)雜類型是由簡(jiǎn)單類型組成的够颠。

復(fù)雜數(shù)據(jù)類型只有object


內(nèi)存:棧內(nèi)存 堆內(nèi)存

這個(gè)就不從頭開始介紹了,我們可以簡(jiǎn)單的把這個(gè)想象成這個(gè)虛擬的空間榄鉴, 我們把這個(gè)分為兩個(gè)部分:棧內(nèi)存部分履磨,堆內(nèi)存部分。

一般的庆尘,當(dāng)我們創(chuàng)建一個(gè)新的對(duì)象時(shí)剃诅,簡(jiǎn)單的數(shù)據(jù)類型的值直接存在棧內(nèi)存中。 復(fù)雜數(shù)據(jù)類型的值存在堆內(nèi)存中驶忌,但是在棧內(nèi)存中會(huì)存一個(gè)地址矛辕,好讓我們能在堆內(nèi)存中找到它。


棧內(nèi)存 堆內(nèi)存

1? 與 new Number(1) 的區(qū)別

當(dāng)我們 var a1 = new Number(1)? ?js創(chuàng)建了一個(gè)對(duì)象(哈希)付魔,除了一個(gè)PrimitiveValue

同時(shí)還有一個(gè)可以點(diǎn)開的屬性 __proto__:Number聊品, 這個(gè)屬性中包含了另一些屬性

這些屬性中有一些我們可以看懂的 toString? ?它指向一個(gè)toString函數(shù) 和一個(gè) valueOf屬性和它的函數(shù)

我們可以調(diào)用這些方法得到一些返回值

當(dāng)我們 用var a2 = 1 創(chuàng)建一個(gè)對(duì)象時(shí)候 我們同樣可以調(diào)用? toString() valueOf() ,這是為什么呢几苍?

因?yàn)?當(dāng)我們var a2 = 1 寫下這行代碼的時(shí)候 它還只是個(gè)簡(jiǎn)單類型 它的值 直接存在棧內(nèi)存中?

但我們寫下 a2.toString()的時(shí)候 它就會(huì)被一個(gè)臨時(shí)對(duì)象(temp)替代? 這個(gè)對(duì)象 跟 temp = new Number(1)? 完全相同

這樣它就能想a1一樣 調(diào)用這些屬性翻屈,當(dāng)你完成這些操作得到返回值時(shí)候這個(gè)臨時(shí)對(duì)象就會(huì)被銷毀。

所以 var a = 1? 和 var a = num Number(1) 唯一的區(qū)別就是? 后者比前者寫起來麻煩 除此之外沒有任何區(qū)別妻坝。

共用屬性

我們?cè)?var b = new Number(2) 跟 a1 比較


我們可以看到? 除了PrimitiveValue 不一樣之外 其他部分一樣? 伸眶。

因此我們可以知道__proto__:Number? 就是number 的共用屬性

JS 內(nèi)存是很稀缺的? js不可能每次創(chuàng)建一個(gè)number 對(duì)象 就寫一遍這個(gè)屬性? 這樣非常浪費(fèi)空間

所以JS 把這些共有屬性存放在一個(gè)地方? 當(dāng)我們需要的時(shí)候 就通過__proto__:Number 找到它惊窖。

我們會(huì)注意到 在__proto__:Number 里面 還有一個(gè)__proto__:Object? ? 這個(gè)里面 是所有對(duì)象的共有屬性?

__proto__:Object? 里面還會(huì)指向其他的共有屬性嗎 沒有了?__proto__:Object 里面的?__proto__ 指向的是null

這些共用屬性是哪里來的

這些共有屬性不是你穿件對(duì)象時(shí)才出現(xiàn)的而是你一打開瀏覽器就存在的

當(dāng)我們打開瀏覽器 ,瀏覽器就會(huì)自動(dòng)創(chuàng)建一個(gè)全局對(duì)象global(window)? window對(duì)象會(huì)創(chuàng)建很多方法? 其中就包括 number() String()等等


這些不同的方法 構(gòu)造了 不用類型的共用屬性? 然后供我們調(diào)用 這些構(gòu)造出來的共用屬性 我們就叫做 原型(prototype)

__proto__? 為了引用共用屬性用的赚抡。 我們把一層一層引用共用屬性的鏈接 叫做 原型鏈

對(duì)象的?__proto__ 指向的就是 創(chuàng)建這個(gè)對(duì)象的 函數(shù)構(gòu)造的prototype

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末爬坑,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子涂臣,更是在濱河造成了極大的恐慌盾计,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赁遗,死亡現(xiàn)場(chǎng)離奇詭異署辉,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)岩四,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門哭尝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人剖煌,你說我怎么就攤上這事材鹦。” “怎么了耕姊?”我有些...
    開封第一講書人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵桶唐,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我茉兰,道長(zhǎng)尤泽,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任规脸,我火速辦了婚禮坯约,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘莫鸭。我一直安慰自己闹丐,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開白布被因。 她就那樣靜靜地躺著妇智,像睡著了一般。 火紅的嫁衣襯著肌膚如雪氏身。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,554評(píng)論 1 305
  • 那天惑畴,我揣著相機(jī)與錄音蛋欣,去河邊找鬼。 笑死如贷,一個(gè)胖子當(dāng)著我的面吹牛陷虎,可吹牛的內(nèi)容都是我干的到踏。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼尚猿,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼窝稿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起凿掂,我...
    開封第一講書人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤伴榔,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后庄萎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體踪少,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年糠涛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了援奢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡忍捡,死狀恐怖集漾,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情砸脊,我是刑警寧澤具篇,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站脓规,受9級(jí)特大地震影響栽连,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜侨舆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一秒紧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧挨下,春花似錦熔恢、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至愁铺,卻和暖如春鹰霍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背茵乱。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工茂洒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人瓶竭。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓督勺,卻偏偏與公主長(zhǎng)得像渠羞,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子智哀,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 前言:原型與原型鏈這兩個(gè)名詞毋庸置疑聽起來是很高大上的次询,以前總是出現(xiàn)在傳說中,這兩天看了教程瓷叫,準(zhǔn)備介紹一下這傳說中...
    EnochQin閱讀 658評(píng)論 0 3
  • 關(guān)于JS面向?qū)ο笸偷酰覀兪紫刃枰私獾囊粋€(gè)問題,就是什么是內(nèi)存赞辩! var a = 1 發(fā)生了什么雌芽? 我們常說的內(nèi)存...
    si_月閱讀 337評(píng)論 0 0
  • 一. 普通對(duì)象與函數(shù)對(duì)象 JavaScript 中,萬物皆對(duì)象辨嗽!但對(duì)象也是有區(qū)別的世落。分為普通對(duì)象和函數(shù)對(duì)象,Obj...
    抓住時(shí)間的尾巴吧閱讀 311評(píng)論 0 0
  • 一. 普通對(duì)象與函數(shù)對(duì)象JavaScript 中糟需,萬物皆對(duì)象屉佳!但對(duì)象也是有區(qū)別的。分為普通對(duì)象和函數(shù)對(duì)象洲押,Obje...
    80bb3ef13dea閱讀 1,595評(píng)論 1 10
  • 問題原因 這是因?yàn)閁buntu預(yù)安裝的vi是tiny版本杈帐。我們安裝了vim的full版本之后体箕,鍵盤的所有鍵在vi下...
    zlrs閱讀 482評(píng)論 0 0