国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

yacheng / 1420人閱讀

摘要:問題來源在中,引用類型的變量引用的只是內存的地址信息,所以在用其給其他變量賦值時,另一個變量得到的是該內存地址,不是內存中的內容,所以在另一個變量改變某個值的時候會反映在原始變量中。

問題來源

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

例如:

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

解決方法:

如果是數組:

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

通用的:對數組、對象都適用的(其實就是循環遍歷重新建一個):

    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;  
    } 
 

節點克隆:

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/83599.html

相關文章

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

    摘要:它將返回目標對象。有些文章說是深拷貝,其實這是不正確的。深拷貝相比于淺拷貝速度較慢并且花銷較大。拷貝前后兩個對象互不影響。使用深拷貝的場景完全改變變量之后對沒有任何影響,這就是深拷貝的魔力。 一、賦值(Copy) 賦值是將某一數值或對象賦給某個變量的過程,分為: 1、基本數據類型:賦值,賦值之后兩個變量互不影響 2、引用數據類型:賦址,兩個變量具有相同的引用,指向同一個對象,相互之間有...

    laznrbfe 評論0 收藏0
  • 【進階4-1期】詳細解析賦值、淺拷貝和深拷貝的區別

    摘要:展開語法木易楊通過代碼可以看出實際效果和是一樣的。木易楊可以看出,改變之后的值并沒有發生變化,但改變之后,相應的的值也發生變化。深拷貝使用場景木易楊完全改變變量之后對沒有任何影響,這就是深拷貝的魔力。木易楊情況下,轉換結果不正確。 一、賦值(Copy) 賦值是將某一數值或對象賦給某個變量的過程,分為下面 2 部分 基本數據類型:賦值,賦值之后兩個變量互不影響 引用數據類型:賦址,兩個...

    silvertheo 評論0 收藏0
  • 拷貝和淺拷貝的區別

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

    suemi 評論0 收藏0
  • 一篇文章理解JS數據類型、深拷貝和淺拷貝

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

    EddieChan 評論0 收藏0
  • 一篇文章理解JS數據類型、深拷貝和淺拷貝

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

    enda 評論0 收藏0

發表評論

0條評論

yacheng

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<