亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

__proto__(隱式原型)與prototype(顯式原型)

plus2047 / 1713人閱讀

摘要:最近了解了一下與簡(jiǎn)單的說(shuō)它就是一個(gè)屬性且屬性的值為地址,指向一個(gè)對(duì)象。而它通常為函數(shù)的屬性。那指向誰(shuí)呢構(gòu)造函數(shù)是的實(shí)例所以的判斷沿著原型鏈不斷的向上查找分別判斷是否與相等

最近了解了一下__proto__與prototype:
prototype
1.簡(jiǎn)單的說(shuō)它就是一個(gè)屬性且屬性的值為地址,指向一個(gè)對(duì)象。
而它通常為函數(shù)的屬性。
2.它主要用來(lái)共享屬性和方法(常用于構(gòu)造函數(shù)創(chuàng)建實(shí)例對(duì)象給實(shí)例對(duì)象共享屬性)
3.主要用來(lái)被訪問(wèn)
4.判斷自有屬性和原型屬性 一般用hasOwnProperty()

function Person(name){
    this.name = name;
}
typeof(Person.prototype) //"object"
Person.prototype.publicData = "test"
Person.privateData = "test1"
Person.hasOwnProperty("privateData") //true
Person.hasOwnProperty("publicData") //false
var bob = new Person("bob")
var mary = new Person("mary") //bob和mary共享publicData屬性

__proto__:
1.基本所有的對(duì)象有該屬性
2.用來(lái)構(gòu)建原型鏈訪問(wèn)構(gòu)造方法中的顯示原型

如何訪問(wèn)?

var arr = new Array()
arr.__proto__ === Array.prototype //true
arr.push(1)
arr.hasOwnProperty("push")//false
"push" in arr//true

以上代碼:Array是arr的構(gòu)造函數(shù),arr的隱式原型指向Array的顯示原型,arr中并無(wú)push的方法,卻能調(diào)用到push這個(gè)方法
這里的push方法調(diào)用的是Array.prototype中的方法
理論上原型鏈可以無(wú)限長(zhǎng)

function Foo(){}
function Bar(){}
Foo.prototype = new Bar()

此時(shí)Foo繼承了Bar: Foo的實(shí)例在訪問(wèn)原型鏈的時(shí)候先訪問(wèn)Foo的顯示原型在訪問(wèn)Bar的顯示原型

Foo.prototype = {}

當(dāng)然我們可以手動(dòng)修改Foo的繼承,以上兩種方法重寫(xiě)了Foo.prototype,所以Foo.prototype.constructor也跟著改變了。

那Foo.__proto__指向誰(shuí)呢? 構(gòu)造函數(shù)是Function的實(shí)例 所以Foo.__proto__ === Function.prototype

instanceof的判斷:

function Foo(){}
Foo instanceof Function
Foo.__proto__.__proto__ ..... === Function.prototype? 

Foo沿著原型鏈不斷的向上查找 分別判斷是否與Function.prototype相等

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

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

相關(guān)文章

  • 這樣理解原型原型鏈比較簡(jiǎn)單

    摘要:屬性這是每個(gè)對(duì)象都有的隱式原型屬性,指向了創(chuàng)建該對(duì)象的構(gòu)造函數(shù)的原型。 原型 在JavaScript中,有兩個(gè)原型,分別是 prototype 和 _proto_注:在ECMA-262第5版中管這個(gè) _proto_ 叫 [[Prototype]] prototype 屬性:這是一個(gè)顯式原型屬性,只有函數(shù)才擁有該屬性。_proto_ 屬性:這是每個(gè)對(duì)象都有的隱式原型屬性,指向了創(chuàng)建該對(duì)象...

    csRyan 評(píng)論0 收藏0
  • javascript 之 prototype__proto__

    摘要:首先,先介紹一個(gè)今天的主角隱式原型與顯式原型什么是和顯式原型在每一個(gè)函數(shù)請(qǐng)注意是函數(shù)創(chuàng)建之后都會(huì)有一個(gè)叫的屬性,這個(gè)屬性指向的是函數(shù)的原型對(duì)象。最后總結(jié)一下對(duì)象有屬性指向該對(duì)象的構(gòu)造函數(shù)的原型對(duì)象。 首先,先介紹一個(gè)今天的主角:proto(隱式原型)與prototype(顯式原型) 什么是__proto__和prototype? prototype(顯式原型)在每一個(gè)函數(shù)(請(qǐng)注意是函數(shù)...

    WrBug 評(píng)論0 收藏0
  • JS 中的 __proto__ prototype

    摘要:在這篇文章中,他介紹了一種實(shí)現(xiàn)繼承的方法,這種方法并沒(méi)有使用嚴(yán)格意義上的構(gòu)造函數(shù)。的左值一般是一個(gè)對(duì)象,右值一般是一個(gè)構(gòu)造函數(shù),用來(lái)判斷左值是否是右值的實(shí)例。 __proto__ 探究 __proto__隱式原型與prototype顯式原型是個(gè)容易令人混淆的概念,簡(jiǎn)而言之prototype是構(gòu)造函數(shù)用來(lái)被自己的實(shí)例繼承的原型,而_proto_是實(shí)例用來(lái)繼承父類(lèi)原型的載體。 1. 是什么...

    Donald 評(píng)論0 收藏0
  • 弄清原型原型

    摘要:四條大規(guī)則原型和原型鏈,大體可以用以下幾條規(guī)則概括,弄清楚了這幾條,也就基本吃透了原型和原型鏈。上圖幫助理解吧實(shí)例的隱式原型屬性指向其構(gòu)造函數(shù)的顯式原型屬性。原型相關(guān)方法判斷一個(gè)對(duì)象是否在原型鏈上可以用,判斷某一個(gè)屬性是否是自身屬性可以用。 四條大規(guī)則 原型和原型鏈,大體可以用以下幾條規(guī)則概括,弄清楚了這幾條,也就基本吃透了原型和原型鏈。 所有的引用類(lèi)型都有一個(gè)__proto__屬性...

    enda 評(píng)論0 收藏0
  • js基礎(chǔ)(二):構(gòu)造函數(shù)原型(看完必懂)

    摘要:寫(xiě)在最前構(gòu)造函數(shù)和原型模式的使用場(chǎng)景很廣泛,但因?yàn)閷?duì)概念的混淆不清導(dǎo)致無(wú)法熟練掌握。換句話說(shuō),不必在構(gòu)造函數(shù)中定義對(duì)象實(shí)例的信息,而是可以將這些信息直接添加到原型對(duì)象中,比如下面的方法。 寫(xiě)在最前:構(gòu)造函數(shù)和原型模式的使用場(chǎng)景很廣泛,但因?yàn)閷?duì)概念的混淆不清導(dǎo)致無(wú)法熟練掌握。切圖帶你從代碼和流程圖一步步攻克,純干貨,建議收藏詳看,原型模式理解圖非常重要,務(wù)必多看幾遍! 前往查看demo源...

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

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

0條評(píng)論

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