成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

JavaScript共有屬性(原型)(prototype/__proto__)

tigerZH / 1730人閱讀

摘要:這個(gè)就指向了類(lèi)型的共有方法庫(kù)這個(gè)就表示類(lèi)型的共有方法庫(kù)里所有的方法簡(jiǎn)單類(lèi)型和對(duì)象諸如像下面代碼所示,就是簡(jiǎn)單類(lèi)型的簡(jiǎn)單聲明。

標(biāo)題中,__proto____是由兩個(gè)_組成的

共有屬性(原型)

這個(gè)概念就是,一段代碼有諸多個(gè)對(duì)象,對(duì)象有很多的屬性、方法,把這么多個(gè)對(duì)象相同的屬性、方法提取出來(lái),弄在一個(gè)新對(duì)象里,大家一起用。對(duì)象里就只要存儲(chǔ)新對(duì)象的地址,到時(shí)候要用到這些屬性、方法了,再調(diào)出來(lái)使用。

看下圖,簡(jiǎn)易內(nèi)存圖。左邊原始代碼區(qū)里聲明了新對(duì)象O1,var O1=new Object(),右邊Heap里存儲(chǔ)(從左往右看第一個(gè)箭頭的右邊都是Heap,沒(méi)有Stack)。左邊原始代碼區(qū)里又聲明了新對(duì)象O2,var O2=new Object(),右邊Heap里存儲(chǔ)。作為一個(gè)對(duì)象,有些方法是都有的,比如toString(),valueOf等,所以提取出來(lái),放在共有屬性的Heap里,地址隨機(jī)為A100,那么O1,O2的Heap里就存放共有屬性的地址__proto__:A100。你寫(xiě)代碼O1.toString(),就順著上面的箭頭找到O1的Heap,找一遍沒(méi)有,又找到__proto__里好像有東西,就找到了共有屬性的Heap,里面有toString()方法。

__proto__prototype的區(qū)別

個(gè)人理解,__proto__是個(gè)地址,用于指向另一個(gè)對(duì)象,比如某個(gè)共有方法庫(kù)。prototype就是本個(gè)對(duì)象所有方法的集合。

var a=new Number(1);
a.__proto__                //這個(gè)就指向了Number類(lèi)型的共有方法庫(kù)
a.__proto__.prototype      //這個(gè)就表示Number類(lèi)型的共有方法庫(kù)里所有的方法
簡(jiǎn)單類(lèi)型和對(duì)象

諸如像下面代碼所示,就是簡(jiǎn)單類(lèi)型的簡(jiǎn)單聲明。這樣子聲明的變量只包含簡(jiǎn)單類(lèi)型值,沒(méi)有別的像toString(),valueOf,toFixed......等等的方法

var a=1;
var b="abc";
var c=true;

諸如像下面代碼所示,就是簡(jiǎn)單類(lèi)型的對(duì)象聲明。這樣子聲明的變量除了包含簡(jiǎn)單類(lèi)型值,還自帶了一些類(lèi)型專(zhuān)屬方法對(duì)象方法等等的方法

var a=new Number(1);
var b=new String("abc");
var c=new Boolean(true);

類(lèi)型專(zhuān)屬方法對(duì)象方法就是上面講的共有屬性(原型)。這就好像,所有的Number類(lèi)型有自己的方法庫(kù),所有的String類(lèi)型有自己的方法庫(kù),所有的Boolean類(lèi)型有自己的方法庫(kù),這些都是對(duì)象,所以最后所有Object類(lèi)型有一個(gè)最最通用的方法庫(kù)。畫(huà)成圖如下圖。

S1,S2 → String類(lèi)型 → 自己的Heap → String類(lèi)型方法庫(kù) → Object方法庫(kù)

n1,n2 → Number類(lèi)型 → 自己的Heap → Number類(lèi)型方法庫(kù) → Object方法庫(kù)

b1,b2 → Boolean類(lèi)型 → 自己的Heap → Boolean類(lèi)型方法庫(kù) → Object方法庫(kù)

o1,o2 → Object類(lèi)型 → 自己的Heap → Object方法庫(kù)

簡(jiǎn)單聲明和對(duì)象聲明的區(qū)別

講道理,用起來(lái)沒(méi)啥區(qū)別,方法該調(diào)用的調(diào)用,屬性該有的都一樣有。但實(shí)際上,是JavaScript自己做了處理的,方便了開(kāi)發(fā)人員。

你先用簡(jiǎn)單聲明聲明一個(gè)簡(jiǎn)單類(lèi)型var n=1

簡(jiǎn)單類(lèi)型缺點(diǎn)是,它就是一個(gè)值,啥也沒(méi)有,想對(duì)它進(jìn)行各種操作,不行

怎么辦!這樣也太傻太沒(méi)用了吧??!那,臨時(shí)轉(zhuǎn)換下吧~~~

臨時(shí)轉(zhuǎn)換:

當(dāng)你寫(xiě)下這樣的代碼var b=n.toString();

建立臨時(shí)變量temp,var temp=new Number(n)

這樣就可以調(diào)用temptoString()方法了,temp.toString()

好了,臨時(shí)轉(zhuǎn)換好了,正確返回了n.toString()

最后刪除臨時(shí)變量temp,結(jié)束,temp來(lái)了、做了、走了

再來(lái)看看內(nèi)存圖

左邊原始代碼區(qū),簡(jiǎn)單聲明變量var n=1;,中間Stack里存儲(chǔ)n的值

調(diào)用方法n.toString(),Stack里建立新變量temp,這是個(gè)對(duì)象,所以Heap里存儲(chǔ)temp的所有內(nèi)容,Stack里存儲(chǔ)Heap地址ADDR 6

這樣n.toString(),就等于temp.toString()

返回temp.toString()后,temp就被磨滅了,Heap里的內(nèi)容也隨之消失

Number類(lèi)型

兩種聲明方式

var a=1;
var b=new Number(1);

Number類(lèi)型專(zhuān)屬方法

聲明了一個(gè)變量,輸出變量后看到,里面就只有一個(gè)東西__proto__,這是個(gè)地址,指向Number類(lèi)型公用的方法庫(kù)

點(diǎn)開(kāi)__proto__,看到的就是Number類(lèi)型共用的方法庫(kù)

里邊看到還有個(gè)__proto__,因?yàn)镹umber類(lèi)型也是對(duì)象呀,所以這個(gè)__proto__指向Object類(lèi)型公用的方法庫(kù)。點(diǎn)開(kāi)這個(gè)__proto__,就看到了Object類(lèi)型公用的方法庫(kù)

Number類(lèi)型常用方法

toString()
toFixed()
toExponential()
valueOf()

charCodeAt(0)
toString(16)

String類(lèi)型

兩種聲明方式

var a="abc";
var b=new String("abc");

String類(lèi)型專(zhuān)屬方法

聲明了一個(gè)變量,輸出變量后看到,里面除了這個(gè)String對(duì)象的信息,還有一個(gè)東西__proto__,這是個(gè)地址,指向String類(lèi)型公用的方法庫(kù)

點(diǎn)開(kāi)__proto__,看到的就是String類(lèi)型共用的方法庫(kù)

。
。
。

里邊看到還有個(gè)__proto__,因?yàn)镾tring類(lèi)型也是對(duì)象呀,所以這個(gè)__proto__指向Object類(lèi)型公用的方法庫(kù)。點(diǎn)開(kāi)這個(gè)__proto__,就看到了Object類(lèi)型公用的方法庫(kù)

String類(lèi)型常用方法

trim()
concat()
slice()

Boolean類(lèi)型

兩種聲明方式

var a=true;
var b=new Boolean(true);

Boolean類(lèi)型專(zhuān)屬方法

聲明了一個(gè)變量,輸出變量后看到,里面就只有一個(gè)東西__proto__,這是個(gè)地址,指向Boolean類(lèi)型公用的方法庫(kù)

點(diǎn)開(kāi)__proto__,看到的就是Boolean類(lèi)型共用的方法庫(kù)

里邊看到還有個(gè)__proto__,因?yàn)锽oolean類(lèi)型也是對(duì)象呀,所以這個(gè)__proto__指向Object類(lèi)型公用的方法庫(kù)。點(diǎn)開(kāi)這個(gè)__proto__,就看到了Object類(lèi)型公用的方法庫(kù)

Boolean類(lèi)型常用方法

Object類(lèi)型

兩種聲明方式

var a={name:1};
var b=new Object({name:1});

Object類(lèi)型專(zhuān)屬方法

聲明了一個(gè)變量,輸出變量后看到,里面對(duì)象a基本信息,還有一個(gè)東西__proto__,這是個(gè)地址,指向Object類(lèi)型公用的方法庫(kù)

點(diǎn)開(kāi)__proto__,a本身就是對(duì)象沒(méi)有別的類(lèi)型,所以看到的就是Object類(lèi)型共用的方法庫(kù)

Object類(lèi)型常用方法

toString()
valueOf()

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/108024.html

相關(guān)文章

  • 原型鏈一:原型原型

    摘要:說(shuō)白了,原型就是構(gòu)造函數(shù)用來(lái)構(gòu)造新實(shí)例的模板對(duì)象。什么是原型鏈先回答什么是原型。例如這個(gè)原型的原型就是這個(gè)構(gòu)造函數(shù)的,既這個(gè)原型對(duì)象。這些原型對(duì)象通過(guò)像鏈子一樣連起來(lái),就叫做原型鏈。 原型鏈初步學(xué)習(xí) 這篇博客只是我初步理解原型鏈的一個(gè)個(gè)人學(xué)習(xí)筆記,寫(xiě)的比較粗略,且有的地方可能理解錯(cuò)誤. 更多更專(zhuān)業(yè)的關(guān)于原型鏈的解釋請(qǐng)看JavaScript深入之從原型到原型鏈和阮一峰的博客:Javas...

    MudOnTire 評(píng)論0 收藏0
  • JS面向?qū)ο蠖?this/原型鏈/new原理

    摘要:情況沒(méi)有明確作用對(duì)象的情況下,通常為全局對(duì)象例如函數(shù)的回調(diào)函數(shù),它的就是全局對(duì)象。正因如此,機(jī)器可以作為這類(lèi)對(duì)象的標(biāo)志,即面向?qū)ο笳Z(yǔ)言中類(lèi)的概念。所以機(jī)器又被稱(chēng)為構(gòu)造函數(shù)。原型鏈也就是繼承鏈。 JS面向?qū)ο蠖?this/原型鏈/new原理 阮一峰JavaScript教程:面向?qū)ο缶幊?阮一峰JavaScript教程:實(shí)例對(duì)象與 new 命令 阮一峰JavaScript教程:this 關(guān)...

    anRui 評(píng)論0 收藏0
  • 淺談:快速理解JS的原型原型

    摘要:中有基本類(lèi)型和復(fù)雜類(lèi)型的區(qū)分。原型與原型鏈這里,就引入了兩個(gè)新的概念。原型對(duì)象就是用來(lái)存放聲明對(duì)象中共有的那部分屬性。而原型對(duì)象自身也是一個(gè)對(duì)象,它也有自己的原型對(duì)象。這樣層層上溯,就形成了一個(gè)類(lèi)似鏈表的結(jié)構(gòu),這就是原型鏈。 JavaScript中有基本類(lèi)型和復(fù)雜類(lèi)型的區(qū)分。 當(dāng)我們?cè)诼暶饕粋€(gè)基本類(lèi)型時(shí): var n1= 1; console.log(n1); //1 這時(shí)我們可以用N...

    ZoomQuiet 評(píng)論0 收藏0
  • JS題目總結(jié):原型鏈/new/json/MVC/Promise

    摘要:數(shù)據(jù)管理,包括數(shù)據(jù)邏輯數(shù)據(jù)請(qǐng)求數(shù)據(jù)存儲(chǔ)等功能。負(fù)責(zé)處理的事件,并更新也負(fù)責(zé)監(jiān)聽(tīng)的變化,并更新,控制其他的所有流程。上面代碼就是一個(gè)最簡(jiǎn)單的類(lèi),構(gòu)造函數(shù)創(chuàng)建出來(lái)的對(duì)象自身有屬性,其原型上面有一個(gè)屬性。 JS題目總結(jié):原型鏈/new/json/MVC/Promise 1原型鏈相關(guān) showImg(https://segmentfault.com/img/remote/14600000161...

    biaoxiaoduan 評(píng)論0 收藏0
  • 原型原型

    摘要:全局對(duì)象規(guī)定全局對(duì)象叫做,但是瀏覽器把作為全局對(duì)象瀏覽器先存在的。就是一個(gè)哈希表,里面含有很多屬性。對(duì)象表示一個(gè)包含文檔的窗口,其屬性指向窗口中載入的文檔。使用屬性可以獲取指定文檔所在窗口。在標(biāo)簽瀏覽器比如中,每個(gè)標(biāo)簽具有自己的對(duì)象。 全局對(duì)象 ECMAScript規(guī)定全局對(duì)象叫做global,但是瀏覽器把window作為全局對(duì)象(瀏覽器先存在的)。window就是一個(gè)哈希表,里面含有...

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

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

0條評(píng)論

閱讀需要支付1元查看
<