成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

js原型和原型鏈

Winer / 1400人閱讀

摘要:幾乎所有對(duì)象在創(chuàng)建的時(shí)候都會(huì)生成鏈,就是人們常說(shuō)的原型鏈,當(dāng)你試圖引用對(duì)象的屬性時(shí),會(huì)觸發(fā)對(duì)象的操作,對(duì)于默認(rèn)的操作來(lái)說(shuō),第一步就是去查找當(dāng)前的對(duì)象中有沒(méi)有你要引用的屬性,如果有就會(huì)使用它,如果沒(méi)有找到,就會(huì)去查找這個(gè)對(duì)象的原型鏈,舉個(gè)例子

[[Prototype]]

幾乎所有對(duì)象在創(chuàng)建的時(shí)候都會(huì)生成[[Prototype]]鏈,就是人們常說(shuō)的原型鏈,當(dāng)你試圖引用對(duì)象的屬性時(shí),會(huì)觸發(fā)對(duì)象的[[Get]]操作,對(duì)于默認(rèn)的[[Get]]操作來(lái)說(shuō),第一步就是去查找當(dāng)前的對(duì)象中有沒(méi)有你要引用的屬性,如果有就會(huì)使用它,如果沒(méi)有找到,就會(huì)去查找這個(gè)對(duì)象的原型鏈,舉個(gè)例子:

var one = {
  type: "one"
}

var two = Object.create(one)

console.log(two.type) // one

在上述例子中,two對(duì)象中并沒(méi)有type屬性,但是由于Object.create(創(chuàng)建一個(gè)新對(duì)象,帶著指定的原型對(duì)象和屬性)將one對(duì)象和two對(duì)象聯(lián)系到一起,因此在原型鏈的查找過(guò)程中,即便在two對(duì)象中沒(méi)有找到type屬性,會(huì)繼續(xù)向上查找,在one對(duì)象中查找到type屬性并打印,如果沿著原型鏈一直向上查找都沒(méi)有找到,則會(huì)打印undefined

prototype

要講清楚prototype是什么先舉一個(gè)簡(jiǎn)單的例子:

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屬性實(shí)際上相當(dāng)與一個(gè)對(duì)象,這個(gè)對(duì)象指向?qū)嵗齭on1和son2的原型對(duì)象,因此,當(dāng)調(diào)用name屬性,會(huì)沿著原型鏈一直向上找,輸出origin.prototype.name的值,簡(jiǎn)單來(lái)說(shuō),函數(shù)的prototype對(duì)象會(huì)指向?qū)嵗脑?,從另一個(gè)角度上來(lái)說(shuō),也可以說(shuō)son1和son2繼承了函數(shù)origin的prototype對(duì)象

constructor

先看一個(gè)簡(jiǎn)單的例子:

function origin() {

}
const son = new origin()
console.log(origin.prototype.constructor === origin) // true
console.log(son.constructor === origin) // true

origin.prototype默認(rèn)有一個(gè)公有并且不可枚舉的屬屬性,constructor,并且這個(gè)屬性引用的是對(duì)象關(guān)聯(lián)的函數(shù),因此origin.prototype.construct = origin,同時(shí)實(shí)例對(duì)象son也有一個(gè)construcor屬性,指向創(chuàng)建這個(gè)對(duì)象的函數(shù)

_proto_

__proto__其實(shí)是一個(gè)絕大多數(shù)瀏覽器支持的用來(lái)訪問(wèn)內(nèi)部原型鏈的一個(gè)屬性

    son.__proto__ === origin.prototype // true

當(dāng)調(diào)用son.__proto__實(shí)際上調(diào)用了son.__proto__(),返回值和Object.getPrototypeOf(origin)結(jié)果相同

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/98527.html

相關(guān)文章

  • JS基礎(chǔ)-原型、原型真的不能一知半解

    摘要:原型鏈和對(duì)象的原型是對(duì)象實(shí)例和它的構(gòu)造函數(shù)之間建立的鏈接,它的值是構(gòu)造函數(shù)的。對(duì)象的原型根據(jù)上文提到的構(gòu)造調(diào)用函數(shù)的時(shí)候會(huì)創(chuàng)建一個(gè)新對(duì)象,自動(dòng)將的原型指向構(gòu)造函數(shù)的對(duì)象。 showImg(https://segmentfault.com/img/remote/1460000020185197); JS的原型、原型鏈一直是比較難理解的內(nèi)容,不少初學(xué)者甚至有一定經(jīng)驗(yàn)的老鳥(niǎo)都不一定能完全說(shuō)清...

    changfeng1050 評(píng)論0 收藏0
  • js原型 原型 原型的繼承

    摘要:圖片描述缺點(diǎn)是無(wú)法實(shí)現(xiàn)多繼承可以在構(gòu)造函數(shù)中,為實(shí)例添加實(shí)例屬性。 對(duì)象的方法 Object.assign() 對(duì)象可以簡(jiǎn)寫(xiě) ,如果 key 和 value 相等則可以簡(jiǎn)寫(xiě) let name = xm; let age = 2; let obj = { name, age, fn(){ // 可以省略函數(shù)關(guān)鍵字和冒號(hào): console.log(2...

    soasme 評(píng)論0 收藏0
  • 從實(shí)現(xiàn)角度分析js原型

    摘要:從實(shí)現(xiàn)角度分析原型鏈歡迎來(lái)我的博客閱讀從實(shí)現(xiàn)角度分析原型鏈網(wǎng)上介紹原型鏈的優(yōu)質(zhì)文章已經(jīng)有很多了,比如說(shuō)作為補(bǔ)充,就讓我們換個(gè)角度,從實(shí)現(xiàn)來(lái)分析一下吧本文假設(shè)你對(duì)原型鏈已經(jīng)有所了解。 從實(shí)現(xiàn)角度分析js原型鏈 歡迎來(lái)我的博客閱讀:《從實(shí)現(xiàn)角度分析js原型鏈》 網(wǎng)上介紹原型鏈的優(yōu)質(zhì)文章已經(jīng)有很多了,比如說(shuō): https://github.com/mqyqingfeng/Blog/issu...

    CompileYouth 評(píng)論0 收藏0
  • 溫故js系列(15)-原型&原型&原型繼承

    摘要:給添加屬性給的原型對(duì)象添加屬性原型鏈在中,每個(gè)對(duì)象都有一個(gè)屬性,其保存著的地址就構(gòu)成了對(duì)象的原型鏈。實(shí)例變量實(shí)例函數(shù)原型鏈繼承有了原型鏈,就可以借助原型鏈實(shí)現(xiàn)繼承。是中唯一一個(gè)處理屬性但是不查找原型鏈的函數(shù)。 前端學(xué)習(xí):教程&開(kāi)發(fā)模塊化/規(guī)范化/工程化/優(yōu)化&工具/調(diào)試&值得關(guān)注的博客/Git&面試-前端資源匯總 歡迎提issues斧正:原型&原型鏈&原型繼承 JavaScript-原...

    Ethan815 評(píng)論0 收藏0
  • JS面向?qū)ο蟮某绦蛟O(shè)計(jì)之繼承的實(shí)現(xiàn) - 原型

    摘要:簡(jiǎn)單回顧一下構(gòu)造函數(shù)原型和實(shí)例對(duì)象之間的關(guān)系每個(gè)構(gòu)造函數(shù)都有一個(gè)原型對(duì)象。找到生成構(gòu)造函數(shù)的原型對(duì)象的構(gòu)造函數(shù),搜索其原型對(duì)象,找到了。 JS面向?qū)ο蟮某绦蛟O(shè)計(jì)之繼承的實(shí)現(xiàn) - 原型鏈 前言:最近在細(xì)讀Javascript高級(jí)程序設(shè)計(jì),對(duì)于我而言,中文版,書(shū)中很多地方翻譯的差強(qiáng)人意,所以用自己所理解的,嘗試解讀下。如有紕漏或錯(cuò)誤,會(huì)非常感謝您的指出。文中絕大部分內(nèi)容引用自《JavaS...

    zhaochunqi 評(píng)論0 收藏0
  • 【前端基礎(chǔ)進(jìn)階】JS原型、原型、對(duì)象詳解

    摘要:二構(gòu)造函數(shù)我們先復(fù)習(xí)一下構(gòu)造函數(shù)的知識(shí)上面的例子中和都是的實(shí)例。這兩個(gè)實(shí)例都有一個(gè)構(gòu)造函數(shù)屬性,該屬性是一個(gè)指針指向。原型鏈其中是對(duì)象的實(shí)例。 一. 普通對(duì)象與函數(shù)對(duì)象 JavaScript 中,萬(wàn)物皆對(duì)象!但對(duì)象也是有區(qū)別的。分為普通對(duì)象和函數(shù)對(duì)象,Object 、Function 是 JS 自帶的函數(shù)對(duì)象。下面舉例說(shuō)明 var o1 = {}; var o2 =new Objec...

    explorer_ddf 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<