引用類型對(duì)象拷貝

1,引用類型有哪些?非引用類型有哪些2.如下代碼輸出什么?為什么

圖片.png

(1)引用類型:對(duì)象,數(shù)組,正則,函數(shù),data類型
(2)非引用類型:number,boolean,undefined,null,symbol(new in ES 6)
(3)輸出:
false
obj {a:1,b:2}
true
(4)原因:
輸出一:在棧里面obj1對(duì)象存的地址是"obj1" ,obj2對(duì)象存的地址是"obj2"
obj1==obj2 <=>"obj1"=="obj2",所以結(jié)果不相等
輸出二:obj1=obj2 ,是把obj2對(duì)象的地址賦值給obj1??臻g,現(xiàn)在兩個(gè)??臻g都指向同一個(gè)地址
所以obj1輸出對(duì)象obj2
輸出三: 由于輸出二時(shí),先把obj2對(duì)象的地址賦值給了obj1,所以obj1和obj2指向了同一個(gè)堆中對(duì)象地址
所以obj1==obj2結(jié)果true

3.如下代碼輸出什么? 為什么

輸出:
1
2
{name:"hellow",age:3}
[1,2,object]

圖片.png

4.如下代碼輸出什么? 為什么

圖片.png

5,過濾如下數(shù)組,只保留正數(shù),直接在原數(shù)組上操作

圖片.png

代碼:

      <script>
        var arr = [3,1,0,-1,-3,2,-5]
        function filter(arr){
            for(var i=0;i<arr.length;i++){
                if(arr[i]<=0){
                    arr.splice(i,1);
                    i--;
                }else{
                    continue;
                }
            }
        }
        filter(arr)
        console.log(arr) // [3,1,2]
    </script>

運(yùn)行結(jié)果:

圖片.png

6.過濾如下數(shù)組,只保留正數(shù),原數(shù)組不變,生成新數(shù)組

圖片.png

代碼:

       <script>
        var arr = [3,1,0,-1,-3,2,-5]
        function filter(arr){
            var newarr=[];
            for (var i=0;i<arr.length;i++) {
                if(arr[i]>0){
                    newarr.push(arr[i]);
                }
                continue;
            }
            return newarr;
        }
        var arr2 = filter(arr)
        console.log(arr2) // [3,1,2]
        console.log(arr)  // [3,1,0,-1,-2,2,-5]
    </script>

運(yùn)行結(jié)果:

圖片.png

7,深拷貝(一個(gè)對(duì)象嵌套一個(gè)對(duì)象,嵌套的這個(gè)對(duì)象只包含基本類型)
法一:

         <script>
        var obj1={
            name:"pearl",
            age:24,
            firend:{
                name:"liu",
                age:24
            }
        }
        function deepCopy(obj){
            var obj2={};
            for(var key in obj){
                if(typeof obj[key]=="number"||typeof obj[key]=="string"||typeof obj[key]=="boolean"||
                typeof obj[key]==undefined||typeof obj[key]==null){
                    obj2[key]=obj[key];
                }else{
                    obj2[key]=deepCopy(obj[key]);
                }
            }
            return obj2;
        }
        console.log(deepCopy(obj1));
    </script>

運(yùn)行結(jié)果:

圖片.png

法二:
JSON方法
對(duì)象=>字符串=>對(duì)象

        <script>
        var oldobj={
            name:"pearl",
            age:24,
            firend:{
                name:"liu",
                age:24
            }
        }
        function deepCopy(obj){
            var obj2;
            obj2=JSON.stringify(obj);
            obj2=JSON.parse(obj2);
            return obj2;
        }
        var newobj=deepCopy(oldobj);//得到新對(duì)象newobj
        newobj.age=40;//改變新對(duì)象中age的值,測(cè)試會(huì)不會(huì)牽連到oldobj
        console.log(newobj);//輸出新對(duì)象
        console.log(oldobj);//輸出oldobj對(duì)象
    </script>

輸出結(jié)果:

圖片.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 引用類型 引用類型變量保存的僅僅是一個(gè)指針,指針指向堆內(nèi)存中保存對(duì)象的位置。 所以基本類型復(fù)制的時(shí)候僅僅復(fù)制值,復(fù)...
    DeeJay_Y閱讀 631評(píng)論 0 0
  • 1.引用類型有哪些?非引用類型有哪些2.如下代碼輸出什么?為什么? var obj1 = {a:1, b:2}; ...
    Rising_suns閱讀 289評(píng)論 0 0
  • 1.引用類型有哪些?非引用類型有哪些 引用類型包括:數(shù)組、對(duì)象、正則、函數(shù) 非引用類型(即基本類型):數(shù)值、布爾值...
    饑人谷_js_chen閱讀 333評(píng)論 0 0
  • 1.引用類型有哪些?非引用類型有哪些非引用類型值,即基本類型值(數(shù)值,布爾值,undefined,null):指保...
    青鳴閱讀 488評(píng)論 0 0
  • 1.引用類型有哪些?非引用類型有哪些 非引用類型值,即基本類型值(數(shù)值,布爾值,undefined,null):指...
    LINPENGISTHEONE閱讀 248評(píng)論 0 0

友情鏈接更多精彩內(nèi)容