摘要:預(yù)解釋基本數(shù)據(jù)類型和引用數(shù)據(jù)類型前者操作值,后者操作地址。原型對(duì)象中都有個(gè)預(yù)定義的屬性,用來(lái)引用它的函數(shù)對(duì)象。這是一種循環(huán)引用和只能分辨值類型的數(shù)據(jù)類型用于判斷引用類型屬于哪個(gè)構(gòu)造函數(shù)的方法循環(huán)對(duì)象自身的屬性原型鏈繼承
預(yù)解釋
前者操作值,后者操作地址。
prototype和__proto__prototype是函數(shù)獨(dú)有的屬性
__proto__是對(duì)象都有的屬性
__proto__可以理解為構(gòu)造器的原型
__proto__=== constructor.prototype
原型鏈當(dāng)試圖得到一個(gè)對(duì)象的某個(gè)屬性時(shí),如果這個(gè)對(duì)象本身沒(méi)有這個(gè)屬性,那么會(huì)去它的__proto__(即它的構(gòu)造函數(shù)prototype)中尋找。
由于__proto__是任何對(duì)象都有的屬性,而js里萬(wàn)物皆對(duì)象,所以會(huì)形成一條__proto__連起來(lái)的鏈條,遞歸訪問(wèn)__proto__必須最終到頭,并且值是null。
var A = function () { } var a = new A(); console.log(a.__proto__ === A.prototype) //true console.log(A.prototype.__proto__ === Object.prototype) //true console.log(Object.prototype.__proto__) //nullconstructor
原型對(duì)象prototype中都有個(gè)預(yù)定義的constructor屬性,用來(lái)引用它的函數(shù)對(duì)象。這是一種循環(huán)引用
person.prototype. constructor === person //true
Function.prototype.constructor === Function //true
Object.prototype.constructor === Object //true
typeof和instanceoftypeof只能分辨值類型的數(shù)據(jù)類型
instanceof用于判斷引用類型屬于哪個(gè)構(gòu)造函數(shù)的方法
var arr=0; arr instanceof Array //truehasOwnProperty
循環(huán)對(duì)象自身的屬性
var A = function () { } var a = new A(); A.prototype.say = function () { console.log("say hello") } a.run = function () { console.log("running") } var item; for (item in a) { if (a.hasOwnProperty(item)) { console.log(item) //run } }原型鏈繼承
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/90577.html
摘要:不理解沒(méi)關(guān)系,下面會(huì)結(jié)合圖例分析上一篇高級(jí)程序設(shè)計(jì)筆記創(chuàng)建對(duì)象下一篇高級(jí)程序設(shè)計(jì)筆記繼承參考之原型鏈的解讀三張圖搞懂的原型對(duì)象與原型鏈繼承與原型鏈 文章直接從原型圖解開始的,如果對(duì)一些概念不太清除,可以結(jié)合后面幾節(jié)查看 1. 圖解原型鏈 1.1 鐵三角關(guān)系(重點(diǎn)) function Person() {}; var p = new Person(); showImg(https://s...
摘要:之前有朋友問(wèn)怎么去理解原型和原型鏈的問(wèn)題。理解原型鏈的小技巧將箭頭視作泛化子類到父類關(guān)系那么圖中所有的虛線將構(gòu)成一個(gè)繼承層級(jí),而實(shí)線表示屬性引用。原型鏈?zhǔn)菍?shí)現(xiàn)繼承的重要方式,原型鏈的形成是真正是靠而非。 之前有朋友問(wèn)怎么去理解原型和原型鏈的問(wèn)題。這個(gè)問(wèn)題,在面試中,很多同學(xué)經(jīng)常都會(huì)遇到。這里給大家講講,方便大家記憶。 JavaScript的特點(diǎn)JavaScript是一門直譯式腳本...
摘要:之前有朋友問(wèn)怎么去理解原型和原型鏈的問(wèn)題。理解原型鏈的小技巧將箭頭視作泛化子類到父類關(guān)系那么圖中所有的虛線將構(gòu)成一個(gè)繼承層級(jí),而實(shí)線表示屬性引用。原型鏈?zhǔn)菍?shí)現(xiàn)繼承的重要方式,原型鏈的形成是真正是靠而非。 之前有朋友問(wèn)怎么去理解原型和原型鏈的問(wèn)題。這個(gè)問(wèn)題,在面試中,很多同學(xué)經(jīng)常都會(huì)遇到。這里給大家講講,方便大家記憶。 JavaScript的特點(diǎn)JavaScript是一門直譯式腳本...
摘要:探索是如何判斷的表達(dá)式如果函數(shù)的顯式原型對(duì)象在對(duì)象的隱式原型鏈上,返回,否則返回是通過(guò)自己產(chǎn)生的實(shí)例案例案例重要注意的顯示原型和隱式原型是一樣的。面試題測(cè)試題測(cè)試題報(bào)錯(cuò)對(duì)照下圖理解 原型與原型鏈深入理解(圖解) 原型(prototype) 函數(shù)的 prototype 屬性(圖) 每個(gè)函數(shù)都有一個(gè)prototype屬性,它默認(rèn)指向一個(gè)Object空對(duì)象(即稱為:原型對(duì)象) 原型對(duì)象中有...
摘要:原型鏈和對(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)的老鳥都不一定能完全說(shuō)清...
摘要:因?yàn)檫@造成了繼承鏈的紊亂,因?yàn)榈膶?shí)例是由構(gòu)造函數(shù)創(chuàng)建的,現(xiàn)在其屬性卻指向了為了避免這一現(xiàn)象,就必須在替換對(duì)象之后,為新的對(duì)象加上屬性,使其指向原來(lái)的構(gòu)造函數(shù)。這個(gè)函數(shù)接收兩個(gè)參數(shù)子類型構(gòu)造函數(shù)和超類型構(gòu)造函數(shù)。 最近一直在研究js面向?qū)ο?,原型鏈繼承是一個(gè)難點(diǎn),下面是我對(duì)繼承的理解以下文章借鑒自CSDN季詩(shī)筱的博客 原型鏈繼承的基本概念: ES中描述了原型鏈的概念,并將原型鏈作為實(shí)現(xiàn)...
閱讀 3311·2021-09-30 09:54
閱讀 3808·2021-09-22 15:01
閱讀 3116·2021-08-27 16:19
閱讀 2581·2019-08-29 18:39
閱讀 2168·2019-08-29 14:09
閱讀 638·2019-08-26 10:23
閱讀 1346·2019-08-23 12:01
閱讀 1876·2019-08-22 13:57