摘要:最近了解了一下與簡(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
摘要:屬性這是每個(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ì)象...
摘要:首先,先介紹一個(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ù)...
摘要:在這篇文章中,他介紹了一種實(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. 是什么...
摘要:寫(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源...
閱讀 1468·2023-04-26 00:10
閱讀 2569·2021-09-22 15:38
閱讀 4192·2021-09-22 15:13
閱讀 3660·2019-08-30 13:11
閱讀 742·2019-08-30 11:01
閱讀 3188·2019-08-29 14:20
閱讀 3308·2019-08-29 13:27
閱讀 1820·2019-08-29 11:33