成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

js引用類(lèi)型與基礎(chǔ)類(lèi)型

mo0n1andin / 1588人閱讀

摘要:引用類(lèi)型拷貝如果想要對(duì)引用類(lèi)型進(jìn)行拷貝,使拷貝之后的結(jié)果互不影響的話,需要在拷貝時(shí)新增一個(gè)堆內(nèi)存,將原始堆內(nèi)存中的數(shù)據(jù)復(fù)制進(jìn)去,同時(shí)新分配的棧內(nèi)存存儲(chǔ)新的堆內(nèi)存地址。

1.基本數(shù)據(jù)類(lèi)型以及引用類(lèi)型基礎(chǔ):

2.賦值拷貝圖解:

基本數(shù)據(jù)類(lèi)型:

```
var a = 123;  
var b = a;  
```

第一步:給a分配一個(gè)棧內(nèi)存:

第二步:給b分配一個(gè)棧內(nèi)存,將a中的數(shù)據(jù)拷貝出來(lái):
因此,基本數(shù)據(jù)類(lèi)型賦值拷貝之后兩個(gè)變量互相不影響

引用類(lèi)型:
```
var a = [qqq]; 
var b = a
```

第一步:分配一個(gè)堆內(nèi)存,存儲(chǔ)數(shù)據(jù),分配一個(gè)棧內(nèi)存,存儲(chǔ)a對(duì)應(yīng)的數(shù)據(jù)的堆內(nèi)存地址(堆1),a可以根據(jù)地址找到相應(yīng)的數(shù)據(jù):

第二步:給b分配一個(gè)棧內(nèi)存,存儲(chǔ)對(duì)應(yīng)的堆內(nèi)存地址(還是堆1),b也可以根據(jù)地址找到相應(yīng)的數(shù)據(jù)。
當(dāng)a或者b改變時(shí),改變的是堆內(nèi)存里面的數(shù)據(jù),棧內(nèi)存里的地址沒(méi)有改變,因此引用類(lèi)型賦值拷貝之后兩個(gè)變量是相互影響的,一個(gè)變量改變會(huì)導(dǎo)致另一個(gè)變量的改變。

3.引用類(lèi)型拷貝
如果想要對(duì)引用類(lèi)型進(jìn)行拷貝,使拷貝之后的結(jié)果互不影響的話,需要在拷貝時(shí)新增一個(gè)堆內(nèi)存,將原始堆內(nèi)存中的數(shù)據(jù)復(fù)制進(jìn)去,同時(shí)新分配的棧內(nèi)存存儲(chǔ)新的堆內(nèi)存地址。

4.深拷貝的方式
1.利用json進(jìn)行轉(zhuǎn)化

var a = JSON.stringify(b);
var c = JSON.parse(a); //將b拷貝給c

將b轉(zhuǎn)化為字符串賦值給a,然后將a再轉(zhuǎn)化為json賦予c


弊端:只能轉(zhuǎn)化只有基礎(chǔ)類(lèi)型的對(duì)象,包含引用類(lèi)型嵌套時(shí)不能使用

2.利用數(shù)組中的slice和concat方法

var a = ["1","2","3"];
var b = a.slice(0);
b[1] = "4"; //a = ["1","2","3"],b = ["1","4","3"]
var c = a.concat();
c[0] = "5"; //a = ["1","2","3"],c = ["5","2","3"]

弊端:無(wú)法切斷引用類(lèi)型嵌套時(shí)的關(guān)聯(lián),slice和concat類(lèi)似

var aa = ["1",["1","2"],"3"];
var bb = aa.slice(0);
bb[1][1] = "33"; //aa=["1",["1","33"],"3"],此時(shí)嵌套的數(shù)據(jù)會(huì)被修改
bb[1] = "33"; //aa=["1",["1","33"],"3"],bb=["1", "33", "3"],此時(shí)嵌套的數(shù)據(jù)不會(huì)被修改

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

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

相關(guān)文章

  • 前端基礎(chǔ)進(jìn)階(一):內(nèi)存空間詳細(xì)圖解

    摘要:一棧數(shù)據(jù)結(jié)構(gòu)與不同,中并沒(méi)有嚴(yán)格意義上區(qū)分棧內(nèi)存與堆內(nèi)存。引用數(shù)據(jù)類(lèi)型的值是保存在堆內(nèi)存中的對(duì)象。不允許直接訪問(wèn)堆內(nèi)存中的位置,因此我們不能直接操作對(duì)象的堆內(nèi)存空間。為了更好的搞懂變量對(duì)象與堆內(nèi)存,我們可以結(jié)合以下例子與圖解進(jìn)行理解。 showImg(https://segmentfault.com/img/remote/1460000009784102?w=1240&h=683); ...

    _Suqin 評(píng)論0 收藏0
  • JS基礎(chǔ)】初談JS現(xiàn)有的數(shù)據(jù)類(lèi)型

    摘要:相當(dāng)于相當(dāng)于相當(dāng)于基礎(chǔ)類(lèi)型不屬于包裝的對(duì)象類(lèi)型小結(jié)數(shù)據(jù)類(lèi)型是每一個(gè)語(yǔ)言的基礎(chǔ)由于屬于弱類(lèi)型腳本語(yǔ)言因此數(shù)據(jù)只有在賦值后才能直到變量的數(shù)據(jù)類(lèi)型下一次我們具體介紹對(duì)象的概念 前言 在《你所不知道的javascript上篇》書(shū)籍 以及《javascript權(quán)威指南》等書(shū)籍里面, 均有介紹js的數(shù)據(jù)類(lèi)型,對(duì)象,原型,繼承。結(jié)合工作經(jīng)驗(yàn), 以及借用一些開(kāi)源庫(kù)和框架的源碼, 進(jìn)行一次梳理。 首先介...

    xeblog 評(píng)論0 收藏0
  • JS中數(shù)據(jù)類(lèi)型、內(nèi)置對(duì)象、包裝類(lèi)型對(duì)象、typeof關(guān)系

    摘要:平時(shí)在復(fù)習(xí)基礎(chǔ)知識(shí)時(shí),經(jīng)常會(huì)遇到數(shù)據(jù)類(lèi)型基礎(chǔ)數(shù)據(jù)類(lèi)型內(nèi)置對(duì)象包裝類(lèi)型對(duì)象,檢測(cè)數(shù)據(jù)類(lèi)型時(shí),用到的值,感覺(jué)都差不多,但是又有差異。值與數(shù)據(jù)類(lèi)型關(guān)系對(duì)比下圖,即可知值相較于基礎(chǔ)數(shù)據(jù)類(lèi)型少多 平時(shí)在復(fù)習(xí)JS基礎(chǔ)知識(shí)時(shí),經(jīng)常會(huì)遇到JS數(shù)據(jù)類(lèi)型、基礎(chǔ)數(shù)據(jù)類(lèi)型、內(nèi)置對(duì)象、包裝類(lèi)型對(duì)象,檢測(cè)數(shù)據(jù)類(lèi)型時(shí),用到的typeof值,感覺(jué)都差不多,但是又有差異。今天特地整理下,方便理解。 JS數(shù)據(jù)類(lèi)型 基礎(chǔ)數(shù)...

    OldPanda 評(píng)論0 收藏0
  • js基礎(chǔ)】之變量類(lèi)型和計(jì)算

    摘要:值類(lèi)型與引用類(lèi)型值類(lèi)型引用類(lèi)型值類(lèi)型引用類(lèi)型類(lèi)型轉(zhuǎn)換字符串拼接運(yùn)算符語(yǔ)句邏輯運(yùn)算字符串拼接運(yùn)算符語(yǔ)句邏輯運(yùn)算符判斷一個(gè)變量會(huì)被當(dāng)做還是區(qū)分和會(huì)發(fā)生類(lèi)型轉(zhuǎn)換,沒(méi)有類(lèi)型轉(zhuǎn)換。 1.數(shù)據(jù)類(lèi)型 ECMAScript定義了6種數(shù)據(jù)類(lèi)型,包括: 基本數(shù)據(jù)類(lèi)型:Undefined、Null、Boolean、Number、String; 復(fù)雜數(shù)據(jù)類(lèi)型:Object; 2.typeof操作符 typ...

    LiuRhoRamen 評(píng)論0 收藏0
  • JS基礎(chǔ) -構(gòu)造函數(shù)原型、原型鏈 Part two

    摘要:構(gòu)造函數(shù)構(gòu)造函數(shù)名大寫(xiě)即使不寫(xiě),構(gòu)造函數(shù)也默認(rèn)返回,最好不寫(xiě)創(chuàng)建實(shí)例執(zhí)行過(guò)程變成空對(duì)象屬性賦值賦值給擴(kuò)展引用類(lèi)型都有構(gòu)造函數(shù)本質(zhì)是的語(yǔ)法糖判斷引用類(lèi)型屬于哪個(gè)構(gòu)造函數(shù),例判斷邏輯的一層一層向上找,能否對(duì)應(yīng)到原型規(guī)則以下所說(shuō)的引用類(lèi)型均指對(duì)象 1.構(gòu)造函數(shù): function Foo(name,age){// Foo構(gòu)造函數(shù)名大寫(xiě) this.name =name; thi...

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

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

0條評(píng)論

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