前端重學(xué)之路——重翻紅寶書_原型原型鏈

最近要準(zhǔn)備去面試了隆判,再翻書時(shí)發(fā)現(xiàn)之前學(xué)知識(shí)跟蓋了個(gè)豆腐渣工程一樣,一推就倒僧界,為了保證知識(shí)體系的完整及堅(jiān)固侨嘀。才有了這個(gè)學(xué)習(xí)系列,目的就是把自己學(xué)到的知識(shí)記錄下來捂襟,以后翻翻看一看咬腕。這個(gè)系列會(huì)持續(xù)到覺得自己覺得前端學(xué)會(huì)了為止。
雖然說是重翻紅寶書葬荷,但其實(shí)只是借鑒一下涨共,還是要翻一翻大佬們的知識(shí)的。

今天來說一下原型和原型鏈闯狱,強(qiáng)烈推薦鏈接1煞赢。

先插入2個(gè)參考的學(xué)習(xí)鏈接
掘金-三張圖搞懂JavaScript的原型對(duì)象與原型鏈
知乎-JavaScript 世界萬(wàn)物誕生記

【萬(wàn)物皆空】

原型的最原始是個(gè)null(這是知識(shí)點(diǎn))


【萬(wàn)物皆對(duì)象】

JavaScript中的一切皆為對(duì)象

function Person(name) {
  this.name = name;
  this.play = function () {
    console.log(`${name}在玩球`);
  }
}
let a = new Person('LaoTian');
let b = new Person('XiaoTian');
typeof a.__proto__;       // object
typeof b.__proto__;       // object
typeof Person.prototype;  // object

【原型基本概念】

prototype每個(gè)函數(shù)都有一個(gè)prototype,可以理解它是一個(gè)共享倉(cāng)庫(kù)哄孤,倉(cāng)庫(kù)里有著可以共享的屬性和方法照筑。prototype默認(rèn)是一個(gè)對(duì)象

// 字面創(chuàng)建
var n = {}
這也是構(gòu)造一個(gè)新實(shí)例,但是是參考Object創(chuàng)建的瘦陈。Object.__proto__ === null 最后我會(huì)貼張圖凝危,就能理解這一行了。
// 構(gòu)造器創(chuàng)建非共享方法
function Person(name) {
  this.name = name;
  this.play = function () {
    console.log(`${name}在玩球`);
  }
}
let a = new Person('LaoTian');
let b = new Person('XiaoTian');
a.play === b.play // false
原因:在new時(shí)晨逝,會(huì)在內(nèi)存中新開辟空間來分別存儲(chǔ)a和b蛾默,所以兩個(gè)play方法指向的其實(shí)是2個(gè)不同的位置。
// 構(gòu)造器公共方法
function Person(name) {
  this.name = name;
}
Person.prototype.play = function() {
  console.log('玩球');
}
let a = new Person('LaoTian');
let b = new Person('XiaoTian');
a.play === b.play // true
原因:把玩這個(gè)方法寫在了公共的方法里捉貌,所以說LaoTian和XiaoTian玩的是一個(gè)球

__proto__是一個(gè)對(duì)象擁有的內(nèi)部屬性支鸡,可以理解是個(gè)指路牌冬念,指引你到達(dá)構(gòu)造函數(shù)(原型對(duì)象)的共享倉(cāng)庫(kù)中去。

//__proto__指向它參照(原型)對(duì)象的prototype
function Person(name) {
  this.name = name;
}
Person.prototype.play = function() {
  console.log('玩球');
}
let a = new Person('LaoTian');
let b = new Person('XiaoTian');
a.__proto__ === Person.prototype; // ture 
b.__proto__ === Person.prototype; // true
a.__proto__ === b.__proto__;      // true


【通用認(rèn)知】

對(duì)象(普通對(duì)象和函數(shù)對(duì)象)都有__proto__, 函數(shù)有prototype牧挣。

大概的樣子

通常來說急前,對(duì)象的__proto__指向函數(shù)的prototype,但是object.creat()除外瀑构。
對(duì)象是由函數(shù)生成的裆针。

通常是這樣的


【特殊注意】

1.當(dāng)對(duì)象是object.creat()創(chuàng)建時(shí)是怎么指向的呢.

var a1 = {} 
var a2 = Object.create(a1);
特殊指向

2.Function的__proto__prototype關(guān)系

Function.__proto__ === Function.prototype; // true

【總結(jié)】

說了半天,解釋了一下prototype__proto__好像也沒說到底是什么是原型鏈寺晌,畫個(gè)圖吧世吨。

var Fn = function(){};
var fnn = new Fn();
// 此圖參考鏈接1,這個(gè)指向過程連成的線呻征,就是原型鏈耘婚。
原型鏈

終極大佬圖【就是因?yàn)榭床欢@個(gè)圖,才研究了半天】


終極大佬圖

搞定怕犁,有疑問請(qǐng)?jiān)u論边篮,看到會(huì)及時(shí)回復(fù)。

?著作權(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
  • 序言:老撾萬(wàn)榮一對(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
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)责球。三九已至焦履,卻和暖如春,著一層夾襖步出監(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)容