摘要:指向一個(gè)對(duì)象,當(dāng)函數(shù)作為構(gòu)造函數(shù)時(shí),則起到類似的作用。二如何理解原型和原型鏈我們創(chuàng)建的每個(gè)函數(shù)都有一個(gè)屬性,這個(gè)屬性是一個(gè)指向原型對(duì)象指針,原型對(duì)象里包含著所有實(shí)例共享的屬性和方法。同時(shí)原型對(duì)象里也有一個(gè)指回了其對(duì)應(yīng)的構(gòu)造函數(shù)。
一、如何理解面向?qū)ο?/b>
面向?qū)ο蟮恼Z(yǔ)言有一個(gè)標(biāo)志,即擁有類的概念,它可以抽象實(shí)例對(duì)象的公共屬性與方法,基于類可以創(chuàng)建任意多個(gè)實(shí)例對(duì)象,一般具有封裝、繼承、多態(tài)的特性!但JS中對(duì)象與純面向?qū)ο笳Z(yǔ)言中的對(duì)象是不同的,ECMA標(biāo)準(zhǔn)定義JS中對(duì)象:無(wú)序?qū)傩缘募希鋵傩钥梢园局怠?duì)象或者函數(shù)。可以簡(jiǎn)單理解為JS的對(duì)象是一組無(wú)序的值,其中的屬性或方法都有一個(gè)名字,根據(jù)這個(gè)名字可以訪問(wèn)相映射的值(值可以是基本值/對(duì)象/方法)。
在類語(yǔ)言中,對(duì)象基于模板來(lái)創(chuàng)建,首先定義一個(gè)類作為對(duì)現(xiàn)實(shí)世界的抽象,然后由類來(lái)實(shí)例化對(duì)象;js(ES5)本身是沒(méi)有class類型的,但是每個(gè)函數(shù)都有一個(gè)prototype屬性。prototype指向一個(gè)對(duì)象,當(dāng)函數(shù)作為構(gòu)造函數(shù)時(shí),prototype則起到類似class的作用。比如用原型模式創(chuàng)建對(duì)象,只需要在構(gòu)造函數(shù)的原型上面定義屬性和方法,那么所有實(shí)例都可以共享原型對(duì)象上的屬性和方法,因?yàn)樗麄儍?nèi)部都有一個(gè)__proto__屬性,指向了原型對(duì)象。
二、如何理解原型和原型鏈我們創(chuàng)建的每個(gè)函數(shù)都有一個(gè)prototype屬性,這個(gè)屬性是一個(gè)指向原型對(duì)象指針,原型對(duì)象里包含著所有實(shí)例共享的屬性和方法。同時(shí)原型對(duì)象里也有一個(gè)constructor指回了其對(duì)應(yīng)的構(gòu)造函數(shù)。
每個(gè)對(duì)象實(shí)例都會(huì)在其內(nèi)部初始化一個(gè)__proto__屬性,它是一個(gè)指向prototype(原型對(duì)象)的指針,當(dāng)我們?cè)L問(wèn)一個(gè)對(duì)象的屬性時(shí),如果這個(gè)對(duì)象內(nèi)部不存在這個(gè)屬性,那么他就會(huì)通過(guò)__proto__去prototype里找這個(gè)屬性,這個(gè)prototype又會(huì)有自己的__proto__指向自己的原型對(duì)象, 于是就這樣一直找下去,形成了原型鏈的概念。
原型鏈實(shí)現(xiàn)的是對(duì)屬性的查找,一直順著原型鏈查找到Object對(duì)象,如果沒(méi)查到返回undefined,還有值得注意的一點(diǎn)就是,所有對(duì)象里的__proto__都是對(duì)原型對(duì)象的一個(gè)引用,而不是副本,所以當(dāng)我們修改原型時(shí),與之相關(guān)的對(duì)象也會(huì)繼承這一改變。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/94389.html
摘要:主要是整理一些自己還記得的面試題。標(biāo)注重點(diǎn)的是頻繁出現(xiàn)的,也確實(shí)很重要的知識(shí)點(diǎn)。總之要深度理解舉一反三邏輯清晰表達(dá)流暢。以上,僅供參考。 主要是整理一些自己還記得的面試題。很多題目會(huì)根據(jù)項(xiàng)目?jī)?nèi)容提問(wèn),現(xiàn)在只記得一些比較常規(guī)的問(wèn)題,后面想起來(lái)會(huì)做一些補(bǔ)充。標(biāo)注重點(diǎn)的是頻繁出現(xiàn)的,也確實(shí)很重要的知識(shí)點(diǎn)。 css 盒子模型:ie與其他瀏覽器的區(qū)別,如何改變盒子模型 圖形:實(shí)現(xiàn)扇形/圓環(huán)/梯...
摘要:主要是整理一些自己還記得的面試題。標(biāo)注重點(diǎn)的是頻繁出現(xiàn)的,也確實(shí)很重要的知識(shí)點(diǎn)。總之要深度理解舉一反三邏輯清晰表達(dá)流暢。以上,僅供參考。 主要是整理一些自己還記得的面試題。很多題目會(huì)根據(jù)項(xiàng)目?jī)?nèi)容提問(wèn),現(xiàn)在只記得一些比較常規(guī)的問(wèn)題,后面想起來(lái)會(huì)做一些補(bǔ)充。標(biāo)注重點(diǎn)的是頻繁出現(xiàn)的,也確實(shí)很重要的知識(shí)點(diǎn)。 css 盒子模型:ie與其他瀏覽器的區(qū)別,如何改變盒子模型 圖形:實(shí)現(xiàn)扇形/圓環(huán)/梯...
摘要:主要是整理一些自己還記得的面試題。標(biāo)注重點(diǎn)的是頻繁出現(xiàn)的,也確實(shí)很重要的知識(shí)點(diǎn)。總之要深度理解舉一反三邏輯清晰表達(dá)流暢。以上,僅供參考。 主要是整理一些自己還記得的面試題。很多題目會(huì)根據(jù)項(xiàng)目?jī)?nèi)容提問(wèn),現(xiàn)在只記得一些比較常規(guī)的問(wèn)題,后面想起來(lái)會(huì)做一些補(bǔ)充。標(biāo)注重點(diǎn)的是頻繁出現(xiàn)的,也確實(shí)很重要的知識(shí)點(diǎn)。 css 盒子模型:ie與其他瀏覽器的區(qū)別,如何改變盒子模型 圖形:實(shí)現(xiàn)扇形/圓環(huán)/梯...
摘要:創(chuàng)建對(duì)象與工廠模式的區(qū)別沒(méi)有顯示地創(chuàng)建對(duì)象直接將方法和屬性付給了對(duì)象沒(méi)有語(yǔ)句構(gòu)造函數(shù)應(yīng)該始終以一個(gè)大寫(xiě)字母開(kāi)頭。創(chuàng)建構(gòu)造函數(shù)的實(shí)例,必須使用操作符。 構(gòu)造函數(shù)模式 ECMAScript中的構(gòu)造函數(shù)可用來(lái)創(chuàng)建特定類型的對(duì)象,像Object和Array這樣的原生構(gòu)造函數(shù)。也可以創(chuàng)建自定義的構(gòu)造函數(shù),從而定義自定義對(duì)象類型的屬性和方法。 1.創(chuàng)建對(duì)象 function Person(name...
摘要:值的比較只進(jìn)行值的比較會(huì)進(jìn)行數(shù)據(jù)類型的轉(zhuǎn)換。只要在當(dāng)前實(shí)例的原型鏈上,我們用其檢測(cè)出來(lái)的結(jié)果都是。但檢測(cè)與不一樣,還可以處理基本數(shù)據(jù)類型的檢測(cè)。 showImg(https://segmentfault.com/img/remote/1460000016733921); 一、JavaScript有幾種類型的值? Javascript有兩種數(shù)據(jù)類型,分別是基本數(shù)據(jù)類型和引用數(shù)據(jù)類型。其中...
閱讀 1865·2019-08-30 15:53
閱讀 3193·2019-08-30 15:44
閱讀 2806·2019-08-26 13:31
閱讀 1949·2019-08-26 12:10
閱讀 792·2019-08-26 11:01
閱讀 2120·2019-08-23 15:32
閱讀 1585·2019-08-23 13:43
閱讀 2529·2019-08-23 11:58