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

資訊專欄INFORMATION COLUMN

js中引用類型賦值(拷貝)問(wèn)題

yacheng / 1427人閱讀

摘要:?jiǎn)栴}來(lái)源在中,引用類型的變量引用的只是內(nèi)存的地址信息,所以在用其給其他變量賦值時(shí),另一個(gè)變量得到的是該內(nèi)存地址,不是內(nèi)存中的內(nèi)容,所以在另一個(gè)變量改變某個(gè)值的時(shí)候會(huì)反映在原始變量中。

問(wèn)題來(lái)源

在js中,引用類型的變量引用的只是內(nèi)存的地址信息,所以在用其給其他變量賦值時(shí),另一個(gè)變量得到的是該內(nèi)存地址,不是內(nèi)存中的內(nèi)容,所以在另一個(gè)變量改變某個(gè)值的時(shí)候會(huì)反映在原始變量中。

例如:

var test={
    name:"jack",
    age:"23",
}
var test1=test
test1.name="rose"
console.log(test.name) //rose
console.log(test1.name) //rose

解決方法:

如果是數(shù)組:

最簡(jiǎn)單的方法就是:
var aArr = [0,1,2,3];
var m = aArr.slice(0);

通用的:對(duì)數(shù)組、對(duì)象都適用的(其實(shí)就是循環(huán)遍歷重新建一個(gè)):

    function clone(obj) {  
    var o;  
    if (typeof obj == "object") {  
        if (obj === null) {  
            o = null;  
        } else {  
            if (obj instanceof Array) {  
                o = [];  
                for (var i = 0, len = obj.length; i < len; i++) {  
                    o.push(clone(obj[i]));  
                }  
            } else {  
                o = {};  
                for (var j in obj) {  
                    o[j] = clone(obj[j]);  
                }  
            }  
        }  
    } else {  
        o = obj;  
    }  
    return o;  
    } 
 

節(jié)點(diǎn)克?。?/p>

var p = document.getElementsByTagName("p")[0];  
var cP = p.cloneNode();//克隆p節(jié)點(diǎn)  
var cP = p.cloneNode(true);//克隆p節(jié)點(diǎn),深度克隆,克隆節(jié)點(diǎn)以及節(jié)點(diǎn)下面的子內(nèi)容。

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

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

相關(guān)文章

  • JavaScript系列--淺析JavaScript解析賦值、淺拷貝和深拷貝的區(qū)別

    摘要:它將返回目標(biāo)對(duì)象。有些文章說(shuō)是深拷貝,其實(shí)這是不正確的。深拷貝相比于淺拷貝速度較慢并且花銷較大??截惽昂髢蓚€(gè)對(duì)象互不影響。使用深拷貝的場(chǎng)景完全改變變量之后對(duì)沒(méi)有任何影響,這就是深拷貝的魔力。 一、賦值(Copy) 賦值是將某一數(shù)值或?qū)ο筚x給某個(gè)變量的過(guò)程,分為: 1、基本數(shù)據(jù)類型:賦值,賦值之后兩個(gè)變量互不影響 2、引用數(shù)據(jù)類型:賦址,兩個(gè)變量具有相同的引用,指向同一個(gè)對(duì)象,相互之間有...

    laznrbfe 評(píng)論0 收藏0
  • 【進(jìn)階4-1期】詳細(xì)解析賦值、淺拷貝和深拷貝的區(qū)別

    摘要:展開語(yǔ)法木易楊通過(guò)代碼可以看出實(shí)際效果和是一樣的。木易楊可以看出,改變之后的值并沒(méi)有發(fā)生變化,但改變之后,相應(yīng)的的值也發(fā)生變化。深拷貝使用場(chǎng)景木易楊完全改變變量之后對(duì)沒(méi)有任何影響,這就是深拷貝的魔力。木易楊情況下,轉(zhuǎn)換結(jié)果不正確。 一、賦值(Copy) 賦值是將某一數(shù)值或?qū)ο筚x給某個(gè)變量的過(guò)程,分為下面 2 部分 基本數(shù)據(jù)類型:賦值,賦值之后兩個(gè)變量互不影響 引用數(shù)據(jù)類型:賦址,兩個(gè)...

    silvertheo 評(píng)論0 收藏0
  • 拷貝和淺拷貝的區(qū)別

    摘要:深拷貝和淺拷貝的區(qū)別背景最近在用框架寫頁(yè)面,賦值給中的對(duì)象時(shí)會(huì)出現(xiàn)一個(gè)問(wèn)題,賦值和被賦值對(duì)象之中任何一個(gè)有變化,另一個(gè)也會(huì)隨之變化。 深拷貝和淺拷貝的區(qū)別 背景:最近在用vue框架寫頁(yè)面,賦值給Vue.$data中的對(duì)象時(shí)會(huì)出現(xiàn)一個(gè)問(wèn)題,賦值和被賦值對(duì)象之中任何一個(gè)有變化,另一個(gè)也會(huì)隨之變化。例如: var b = { foo: 123 }; var vm = new Vue(...

    suemi 評(píng)論0 收藏0
  • 一篇文章理解JS數(shù)據(jù)類型、深拷貝和淺拷貝

    摘要:接下來(lái)我們進(jìn)入正片數(shù)據(jù)類型六種基本數(shù)據(jù)類型布爾值,和一個(gè)表明值的特殊關(guān)鍵字。一種數(shù)據(jù)類型,它的實(shí)例是唯一且不可改變的。在中是沒(méi)有方法是可以改變布爾值和數(shù)字的。參考資料深拷貝淺拷貝 前言 筆者最近整理了一些前端技術(shù)文章,如果有興趣可以參考這里:muwoo blogs。接下來(lái)我們進(jìn)入正片: js 數(shù)據(jù)類型 六種 基本數(shù)據(jù)類型: Boolean. 布爾值,true 和 false. nu...

    EddieChan 評(píng)論0 收藏0
  • 一篇文章理解JS數(shù)據(jù)類型、深拷貝和淺拷貝

    摘要:接下來(lái)我們進(jìn)入正片數(shù)據(jù)類型六種基本數(shù)據(jù)類型布爾值,和一個(gè)表明值的特殊關(guān)鍵字。一種數(shù)據(jù)類型,它的實(shí)例是唯一且不可改變的。在中是沒(méi)有方法是可以改變布爾值和數(shù)字的。參考資料深拷貝淺拷貝 前言 筆者最近整理了一些前端技術(shù)文章,如果有興趣可以參考這里:muwoo blogs。接下來(lái)我們進(jìn)入正片: js 數(shù)據(jù)類型 六種 基本數(shù)據(jù)類型: Boolean. 布爾值,true 和 false. nu...

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

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

0條評(píng)論

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