引用類型對象拷貝

1.引用類型有哪些挑社?非引用類型有哪些

基本類型值(Number医寿、Boolean赵讯、string盈咳、null和undefined):指的是保存在棧內(nèi)存中的簡單數(shù)據(jù)段;
引用類型值(對象边翼、數(shù)組鱼响、函數(shù)、正則):指的是那些保存在堆內(nèi)存中的對象组底,變量中保存的實際上只是一個指針丈积,這個指針執(zhí)行內(nèi)存中的另一個位置,由該位置保存對象

2.如下代碼輸出什么债鸡?為什么

var obj1 = {a:1, b:2};
var obj2 = {a:1, b:2};
console.log(obj1 == obj2);輸出//false;因為是兩個不同的指針江滨,分別指向不同的堆內(nèi)的對象
console.log(obj1 = obj2);//輸出Object {a: 1, b: 2};將obj2賦值給obj1;
console.log(obj1 == obj2);//輸出true厌均;引用類型的賦值是對象引用唬滑,指向同一個地址

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

var a = 1
var b = 2
var c = { name: '饑人谷', age: 2 }
var d = [a, b, c]

var aa = a
var bb = b
var cc = c
var dd = d

a = 11
b = 22
c.name = 'hello'
d[2]['age'] = 3

console.log(aa) //1;
原因:基本類型的復制棺弊,會在變量對象上創(chuàng)建一個新值晶密,然后把該值復制到為新值配置的位置上,該值只是一個副本镊屎,可以參與任何操作不受影響惹挟。
console.log(bb) //2 ;
原因同上
console.log(cc) // { name: 'hello', age: 3 } ;
原因:引用類型的復制缝驳,同樣會在棧中開辟新的空間连锯,是一個副本归苍,但是這個副本是一個指針,這個指針指向同一個對象运怖。因此改變?nèi)魏我粋€變量就會影響另個一個變量拼弃。操作c.name='hello'改變了對象c的 name為hello;變量d中d[2]的指針指向?qū)ο骳,操作d[2]['age'],改變了對象c的age為3
console.log(dd) //[1,2,{ name: 'hello', age: 3 }]
原因:d 中保存的是基本類型a =1,基本類型b=2,
引用類型c ,根據(jù)之前描述的基本類型賦值摇展,引用類型賦值的特點吻氧,a ,b不變,操作c.name = 'hello'
d[2]['age'] = 3咏连,均影像了對象c;

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

var a = 1
var c = { name: 'jirengu', age: 2 }

function f1(n){
++n
}
function f2(obj){
++obj.age
}

f1(a); //沒有返回值盯孙,同時全局變量a 沒賦值
f2(c); // 沒有返回值,但是改變了引用類型c的age為3
f1(c.age) //沒有返回值祟滴,同時全局變量a 沒賦值
console.log(a) //1振惰;由于每次操作沒給a 賦值,所以a不變垄懂。
console.log(c) // { name: 'jirengu', age: 3 } //操作f2(c)改變了age為3骑晶;

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

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

filter(arr)
console.log(arr) // [3,1,2]

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

var arr = [3,1,0,-1,-3,2,-5]
方法一;

function filter(arr){
    var arr2 =  arr.filter(function(item,index,array){//ie8以上
        return (item > 0)
  })
    return arr2;
}

方法二抖剿;

function filter(arr){
    var arr2=[];
    for(var i=0;i<arr.length;i++){
        if(arr[i]>0){    
           arr2.push(arr[i])
      }
    }
    return arr2
}

var arr2 = filter(arr)
console.log(arr2) // [3,1,2]
console.log(arr) // [3,1,0,-1,-2,2,-5]

7.寫一個深拷貝函數(shù)朽寞,用兩種方式實現(xiàn)

深拷貝理解:深復制不是簡單的復制引用,而是在堆中重新分配內(nèi)存斩郎,并且把源對象實例的所有屬性都進行新建復制,復制后的對象與原來的對象是完全隔離的喻频。
參考網(wǎng)址http://www.cnblogs.com/tracylin/p/5346314.html
方法一

 var array = {
    age:25,
    friends:{
        name:"andy",
        age:16
        }
    }
function deepCopy(oldObj){
  var newObj = {};
  for(key in oldObj){
    if(typeof oldObj[key]==="object" && oldObj[key]!= null){
        newObj[key]=deepCopy(oldObj[key])
    }else{
        newObj[key]=oldObj[key]
    }
}
   return newObj;
}
var obj2 = deepCopy(array);

方法二

var source = {
          name:"source",
          child:{
          name:"child"
          }
     }
var target = JSON.parse(JSON.stringify(source));
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末缩宜,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子甥温,更是在濱河造成了極大的恐慌锻煌,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件姻蚓,死亡現(xiàn)場離奇詭異宋梧,居然都是意外死亡,警方通過查閱死者的電腦和手機狰挡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門捂龄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來释涛,“玉大人,你說我怎么就攤上這事倦沧〈角耍” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵展融,是天一觀的道長窖认。 經(jīng)常有香客問我,道長告希,這世上最難降的妖魔是什么扑浸? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮燕偶,結(jié)果婚禮上首装,老公的妹妹穿的比我還像新娘。我一直安慰自己杭跪,他們只是感情好仙逻,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著涧尿,像睡著了一般系奉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上姑廉,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天缺亮,我揣著相機與錄音,去河邊找鬼桥言。 笑死萌踱,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的号阿。 我是一名探鬼主播并鸵,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼扔涧!你這毒婦竟也來了园担?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤枯夜,失蹤者是張志新(化名)和其女友劉穎弯汰,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體湖雹,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡咏闪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了摔吏。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鸽嫂。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡纵装,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出溪胶,到底是詐尸還是另有隱情搂擦,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布哗脖,位于F島的核電站瀑踢,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏才避。R本人自食惡果不足惜橱夭,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望桑逝。 院中可真熱鬧棘劣,春花似錦、人聲如沸楞遏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽寡喝。三九已至糙俗,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間预鬓,已是汗流浹背巧骚。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留格二,地道東北人劈彪。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像顶猜,于是被迫代替她去往敵國和親沧奴。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 一.引用類型有哪些驶兜?非引用類型有哪些引用類型有對象扼仲、數(shù)組、函數(shù)抄淑、正則表達式非引用類型:數(shù)值、布爾值驰后、null肆资、un...
    邵志遠閱讀 383評論 0 0
  • 1.引用類型有哪些?非引用類型有哪些2.如下代碼輸出什么灶芝?為什么? var obj1 = {a:1, b:2}; ...
    Rising_suns閱讀 248評論 0 0
  • 1.引用類型有哪些郑原?非引用類型有哪些 非引用類型值唉韭,即基本類型值(數(shù)值,布爾值犯犁,undefined属愤,null):指...
    LINPENGISTHEONE閱讀 205評論 0 0
  • 1.引用類型有哪些?非引用類型有哪些 引用類型是指那些保存在堆內(nèi)存中的對象酸役。變量中保存的實際上只是一個指針住诸,這個指...
    高進哥哥閱讀 312評論 0 0
  • 引用類型有哪些?非引用類型有哪些 基本類型值(Undefined涣澡、Null贱呐、Boolean、Number和Stri...
    jamesXiao_閱讀 145評論 0 0