原型鏈

原型鏈: 是整個(gè)面向?qū)ο蟮幕A(chǔ)

  • 創(chuàng)建對(duì)象有幾種方法:
var o1 = {name:'o1'}
var o11 = new Object({name:'o11'});

var M = function(){this.name = 'o2'};
var o2 = new M()

var P = {name:'o3'};
var o3 = Object.create(P)
  • 原型、構(gòu)造函數(shù)、實(shí)例、原型鏈:(這塊的演示可以用M來進(jìn)行演示一波原型、構(gòu)造函數(shù)、實(shí)例之間的關(guān)系)

在控制臺(tái)輸入o2(實(shí)例)、M(構(gòu)造函數(shù))、M.prototype(原型對(duì)象)、M.prototype.constructor === M(判斷M的原型對(duì)象的constructor是否嚴(yán)格等于M)、

o2.__proto__ === M.prototype()
  • 構(gòu)造函數(shù): 凡是通過new操作后面的函數(shù),這個(gè)函數(shù)就不是普通的函數(shù),即使里面沒有name,任何一個(gè)函數(shù)只要被new使用了就叫構(gòu)造函數(shù)。 (構(gòu)造函數(shù)是可以使用new運(yùn)算符生成實(shí)例)

構(gòu)造函數(shù)和原型對(duì)象的關(guān)系:

  • 函數(shù)都有一個(gè)prototype屬性,這是在聲明一個(gè)函數(shù)的時(shí)候js自動(dòng)給它添加prototype屬性,prototype指的就是原型對(duì)象;
  • 原型對(duì)象會(huì)以constructor(構(gòu)造器)來區(qū)分是被哪個(gè)構(gòu)造函數(shù)引用;
  • 實(shí)例: 上面的o1、o11、o2就是實(shí)例
  • 原型鏈: 實(shí)例通過prototype和proto往上查找相關(guān)聯(lián)的對(duì)象直到object.prototype的過程為原型鏈。 (工作原理:通過原型鏈的方式找到原型對(duì)象,原型對(duì)象的方法被不同的實(shí)例所共有的為原型鏈的工作原理)
  • instanceof的原理: 判斷實(shí)例對(duì)象的proto和生成該實(shí)例的構(gòu)造函數(shù)的prototype是不是引用的同一個(gè)地址

如果此文對(duì)你有用請(qǐng)動(dòng)動(dòng)你的小手點(diǎn)個(gè)贊!謝謝!?。?/em>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請(qǐng)通過簡(jiǎn)信或評(píng)論聯(lián)系作者。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容