這篇“javascript中原型和原型鏈的示例分析”除了程序員外大部分人都不太理解,今天小編為了讓大家更加理解“javascript中原型和原型鏈的示例分析”,給大家總結(jié)了以下內(nèi)容,具有一定借鑒價值,內(nèi)容詳細步驟清晰,細節(jié)處理妥當(dāng),希望大家通過這篇文章有所收獲,下面讓我們一起來看看具體內(nèi)容吧。
為蒼溪等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及蒼溪網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站設(shè)計、成都網(wǎng)站設(shè)計、蒼溪網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!1.JavaScript主要用來向HTML頁面添加交互行為。 2.JavaScript可以直接嵌入到HTML頁面,但寫成單獨的js文件有利于結(jié)構(gòu)和行為的分離。 3.JavaScript具有跨平臺特性,在絕大多數(shù)瀏覽器的支持下,可以在多種平臺下運行。
[[Prototype]]
幾乎所有對象在創(chuàng)建的時候都會生成[[Prototype]]鏈,就是人們常說的原型鏈,當(dāng)你試圖引用對象的屬性時,會觸發(fā)對象的[[Get]]操作,對于默認(rèn)的[[Get]]操作來說,第一步就是去查找當(dāng)前的對象中有沒有你要引用的屬性,如果有就會使用它,如果沒有找到,就會去查找這個對象的原型鏈,舉個例子:
var one = { type: 'one' } var two = Object.create(one) console.log(two.type) // one
在上述例子中,two對象中并沒有type屬性,但是由于Object.create(創(chuàng)建一個新對象,帶著指定的原型對象和屬性)將one對象和two對象聯(lián)系到一起,因此在原型鏈的查找過程中,即便在two對象中沒有找到type屬性,會繼續(xù)向上查找,在one對象中查找到type屬性并打印,如果沿著原型鏈一直向上查找都沒有找到,則會打印undefined
prototype
要講清楚prototype是什么先舉一個簡單的例子:
function origin(type) { this.type = type console.log(this.type) } origin.prototype.name = 'origin' var son1 = new origin('male') var son2 = new origin('male') console.log(son1.name) // origin console.log(son2.name) // origin
函數(shù)origin的prototype屬性實際上相當(dāng)與一個對象,這個對象指向?qū)嵗齭on1和son2的原型對象,因此,當(dāng)調(diào)用name屬性,會沿著原型鏈一直向上找,輸出origin.prototype.name的值,簡單來說,函數(shù)的prototype對象會指向?qū)嵗脑?,從另一個角度上來說,也可以說son1和son2繼承了函數(shù)origin的prototype對象
constructor
先看一個簡單的例子:
function origin() { } const son = new origin() console.log(origin.prototype.constructor === origin) // true console.log(son.constructor === origin) // true
origin.prototype默認(rèn)有一個公有并且不可枚舉的屬屬性,constructor,并且這個屬性引用的是對象關(guān)聯(lián)的函數(shù),因此origin.prototype.construct = origin,同時實例對象son也有一個construcor屬性,指向創(chuàng)建這個對象的函數(shù)
_proto_
__proto__其實是一個絕大多數(shù)瀏覽器支持的用來訪問內(nèi)部原型鏈的一個屬性
son.__proto__ === origin.prototype // true
當(dāng)調(diào)用son.__proto__實際上調(diào)用了son.__proto__(),返回值和Object.getPrototypeOf(origin)結(jié)果相同
感謝你的閱讀,希望你對“javascript中原型和原型鏈的示例分析”這一關(guān)鍵問題有了一定的理解,具體使用情況還需要大家自己動手實驗使用過才能領(lǐng)會,快去試試吧,如果想閱讀更多相關(guān)知識點的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。