原型與原型鏈

// 先使用構(gòu)造函數(shù)創(chuàng)建一個對象:
function Person() {

}
var person = new Person();
person.name = 'Kevin';
console.log(person.name) // Kevin

// Person 就是一個構(gòu)造函數(shù)佩脊,我們使用 new 創(chuàng)建了一個實例對象 person埃难。

prototype

每個函數(shù)都有一個 prototype 屬性莱预,例Person.prototype军熏,函數(shù)的 prototype 屬性指向了一個對象度硝,這個對象正是調(diào)用該構(gòu)造函數(shù)而創(chuàng)建的實例的原型凌简。
Person.prototype.name = 'Kevin';等價于person.name = 'Kevin';

原型:每一個JavaScript對象(null除外)在創(chuàng)建的時候就會與之關(guān)聯(lián)另一個對象上炎,這個對象就是我們所說的原型,每一個對象都會從原型"繼承"屬性雏搂。

_ _ proto _ _

每一個JavaScript對象(除了 null )都具有的一個屬性藕施,叫_ _ proto_ _寇损,這個屬性會指向該對象的原型。例person._ _ proto_ _

function Person() {

}
var person = new Person();
//對象.__proto__ === 函數(shù).prototype
console.log(person.__proto__ === Person.prototype); // true
console.log(Person.prototype.constructor === Person) // true

實例與原型

當(dāng)讀取實例的屬性時裳食,如果找不到矛市,就會查找與對象關(guān)聯(lián)的原型中的屬性,如果還查不到诲祸,就去找原型的原型浊吏,一直找到最頂層為止。

function Person() {

}

Person.prototype.name = 'Kevin';

var person = new Person();

person.name = 'Daisy';
console.log(person.name) // Daisy

delete person.name;
console.log(person.name) // Kevin

給實例對象 person 添加了 name 屬性烦绳,當(dāng)我們打印 person.name 的時候卿捎,結(jié)果自然為 Daisy。當(dāng)我們刪除了 person 的 name 屬性時径密,讀取 person.name午阵,從 person 對象中找不到 name 屬性就會從 person 的原型也就是person._ _ proto_ _,也就是 Person.prototype中查找享扔,找到了 name 屬性底桂,結(jié)果為 Kevin。

原型鏈

JavaScript中所有的對象都是由它的原型對象繼承而來惧眠。而原型對象自身也是一個對象籽懦,它也有自己的原型對象,這樣層層上溯氛魁,就形成了一個類似鏈表的結(jié)構(gòu)暮顺,這就是原型鏈。
所有原型鏈的終點都是Object函數(shù)的prototype屬性秀存,因為在JavaScript中的對象都默認(rèn)由Object()構(gòu)造捶码。Objec.prototype指向的原型對象同樣擁有原型,不過它的原型是null或链,而null則沒有原型惫恼。
所以查找屬性的時候查到 Object.prototype 就可以停止查找了。

var obj = new Object();
obj.name = 'Kevin'
console.log(obj.name) // Kevin
console.log(Object.prototype.__proto__ === null) // true

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末澳盐,一起剝皮案震驚了整個濱河市祈纯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌叼耙,老刑警劉巖腕窥,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異筛婉,居然都是意外死亡油昂,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來冕碟,“玉大人拦惋,你說我怎么就攤上這事“菜拢” “怎么了厕妖?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長挑庶。 經(jīng)常有香客問我言秸,道長,這世上最難降的妖魔是什么迎捺? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任举畸,我火速辦了婚禮,結(jié)果婚禮上凳枝,老公的妹妹穿的比我還像新娘抄沮。我一直安慰自己,他們只是感情好岖瑰,可當(dāng)我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布叛买。 她就那樣靜靜地躺著,像睡著了一般蹋订。 火紅的嫁衣襯著肌膚如雪率挣。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天露戒,我揣著相機與錄音椒功,去河邊找鬼。 笑死智什,一個胖子當(dāng)著我的面吹牛动漾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播撩鹿,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼悦屏!你這毒婦竟也來了节沦?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤础爬,失蹤者是張志新(化名)和其女友劉穎甫贯,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體看蚜,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡叫搁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片渴逻。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡疾党,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出惨奕,到底是詐尸還是另有隱情雪位,我是刑警寧澤,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布梨撞,位于F島的核電站雹洗,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏卧波。R本人自食惡果不足惜时肿,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望港粱。 院中可真熱鬧螃成,春花似錦、人聲如沸啥容。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咪惠。三九已至击吱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間遥昧,已是汗流浹背覆醇。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留炭臭,地道東北人永脓。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像鞋仍,于是被迫代替她去往敵國和親常摧。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,592評論 2 353

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