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

1魏铅、引用類型有哪些昌犹?非引用類型有哪些

  • 引用類型指保存在堆內(nèi)存中的對(duì)象,變量中保存的實(shí)際上是一個(gè)指針览芳,這個(gè)指針指向內(nèi)存中的另一個(gè)位置斜姥,由該位置保存對(duì)象。它包含:對(duì)象路操、數(shù)組疾渴、函數(shù)、正則表達(dá)式屯仗。
  • 基本類型指保存在棧內(nèi)存中的簡(jiǎn)單數(shù)據(jù)段搞坝。包含:數(shù)值、布爾值魁袜、字符串桩撮、null、undefined峰弹。

2店量、如下代碼輸出什么? 為什么

var obj1 = {a:1, b:2};
var obj2 = {a:1, b:2};
console.log(obj1 == obj2); // false 因?yàn)閛bj1和obj2在堆內(nèi)存中的位置不一樣,是2個(gè)不同的對(duì)象
console.log(obj1 = obj2); // Object {a: 1, b: 2} 鞠呈,將obj2賦值給obj1融师,obj1的指針指向的是obj2的位置,即輸出obj2的對(duì)象
console.log(obj1 == obj2); // true 因?yàn)閛bj1的指針指向的是obj2的位置蚁吝,此時(shí)obj1和obj2指針指向的是相同的對(duì)象
// false  Object {a: 1, b: 2}   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
console.log(bb) // 2
console.log(cc) // Object { name: "hello", age: 3 }
console.log(dd) // [1, 2, Object { name: "hello", age: 3 }]
// 對(duì)于不同的基本變量,它們?cè)跅?nèi)存中的位置不一樣窘茁,當(dāng)其賦值改變之后怀伦,對(duì)其他基本變量無(wú)影響。
// 而對(duì)于不同的引用變量山林,如果它們的指針?biāo)赶虻奈恢靡粯臃看?dāng)其對(duì)象內(nèi)容改變時(shí),其他引用變量的對(duì)象也會(huì)跟著改變驼抹。

4桑孩、如下代碼輸出什么? 為什么

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

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

f1(a) // 變量a的值是基本類型,將a的值賦給n,n改變時(shí)對(duì)a無(wú)影響
f2(c) // var obj=c 把c的棧內(nèi)存中的地址賦值給obj砂蔽,使得obj棧內(nèi)存的指針指向{ name: 'jirengu', age: 2 }對(duì)象
// ++obj.age使{ name: 'jirengu', age: 2 }里面的age自增變?yōu)?洼怔。即對(duì)象內(nèi)容變?yōu)閧 name: 'jirengu', age: 3}
f1(c.age) // 相當(dāng)于在function f1(n){}里面添加var n=c.age(c.age的值是3),故n的值為3左驾,然后自增變?yōu)?,此時(shí)n的值為基本類型
console.log(a) // 1  a的值賦給n,而a本身不變诡右,,n自加1時(shí)對(duì)a無(wú)影響
console.log(c) // Object {name: "jirengu", age: 3}

5安岂、過(guò)濾如下數(shù)組,只保留正數(shù)帆吻,直接在原數(shù)組上操作

var arr = [3,1,0,-1,-3,2,-5]
function filter(arr){
  for(i=0;i<arr.length;i++){
    if (arr[i]<=0){
      arr.splice(i,1); // 表示從第“i”個(gè)位置開(kāi)始(包括i)域那,刪除1個(gè)元素
      i--; // 因?yàn)楫?dāng)有一個(gè)數(shù)被刪除時(shí),下一個(gè)數(shù)的index就變成了現(xiàn)在的這個(gè)值猜煮。如果繼續(xù)循環(huán)就會(huì)錯(cuò)過(guò)下一個(gè)元素次员,所以i自減1   
    }
  }
}
filter(arr)
console.log(arr) // [3,1,2]

6、過(guò)濾如下數(shù)組王带,只保留正數(shù)淑蔚,原數(shù)組不變,生成新數(shù)組

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

7愕撰、寫一個(gè)深拷貝函數(shù)刹衫,用兩種方式實(shí)現(xiàn)

// 遞推
var a={
  name:'kuma',
  sex:'male',
  age:'24',
  hobby:{
  pet:'dragon',
  love:'famale'
  }
}

var newObj={};
function copy(obj){
  
  for(var key in obj){
    if ( typeof obj[key]=='number' || typeof obj[key]=='string' || typeof obj[key]=='boolean' || obj[key]==null || obj[key]==undefined ){
      newObj[key]=obj[key]
    }else {
        newObj[key]=copy(obj[key])
     }
  }return newObj
}
copy(a)
console.log(a)
console.log(newObj)
a.name='bear'
newObj.hobby.love='girl'
console.log(a)
console.log(newObj)

// JSON
var a={
  name:'kuma',
  sex:'male',
  age:'24',
  hobby:{
  pet:'dragon',
  love:'famale'
  }
}

var newObj={};
JSON.stringify(a)
newObj=JSON.parse(JSON.stringify(a))
console.log(a)
console.log(newObj)
a.name='bear'
newObj.hobby.love='girl'
console.log(a)
console.log(newObj)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市搞挣,隨后出現(xiàn)的幾起案子带迟,更是在濱河造成了極大的恐慌,老刑警劉巖囱桨,帶你破解...
    沈念sama閱讀 216,744評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件仓犬,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡舍肠,警方通過(guò)查閱死者的電腦和手機(jī)搀继,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)貌夕,“玉大人律歼,你說(shuō)我怎么就攤上這事》茸ǎ” “怎么了险毁?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,105評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)们童。 經(jīng)常有香客問(wèn)我畔况,道長(zhǎng),這世上最難降的妖魔是什么慧库? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,242評(píng)論 1 292
  • 正文 為了忘掉前任跷跪,我火速辦了婚禮,結(jié)果婚禮上齐板,老公的妹妹穿的比我還像新娘吵瞻。我一直安慰自己葛菇,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,269評(píng)論 6 389
  • 文/花漫 我一把揭開(kāi)白布橡羞。 她就那樣靜靜地躺著眯停,像睡著了一般。 火紅的嫁衣襯著肌膚如雪卿泽。 梳的紋絲不亂的頭發(fā)上莺债,一...
    開(kāi)封第一講書(shū)人閱讀 51,215評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音签夭,去河邊找鬼齐邦。 笑死,一個(gè)胖子當(dāng)著我的面吹牛第租,可吹牛的內(nèi)容都是我干的措拇。 我是一名探鬼主播,決...
    沈念sama閱讀 40,096評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼煌妈,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼儡羔!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起璧诵,我...
    開(kāi)封第一講書(shū)人閱讀 38,939評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤汰蜘,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后之宿,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體族操,經(jīng)...
    沈念sama閱讀 45,354評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,573評(píng)論 2 333
  • 正文 我和宋清朗相戀三年比被,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了色难。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,745評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡等缀,死狀恐怖枷莉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情尺迂,我是刑警寧澤笤妙,帶...
    沈念sama閱讀 35,448評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站噪裕,受9級(jí)特大地震影響蹲盘,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜膳音,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,048評(píng)論 3 327
  • 文/蒙蒙 一召衔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧祭陷,春花似錦苍凛、人聲如沸趣席。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,683評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)吩坝。三九已至毒姨,卻和暖如春哑蔫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背弧呐。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,838評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工闸迷, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人俘枫。 一個(gè)月前我還...
    沈念sama閱讀 47,776評(píng)論 2 369
  • 正文 我出身青樓腥沽,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親鸠蚪。 傳聞我的和親對(duì)象是個(gè)殘疾皇子今阳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,652評(píng)論 2 354

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

  • 1.引用類型有哪些?非引用類型有哪些非引用類型值茅信,即基本類型值(數(shù)值盾舌,布爾值,undefined蘸鲸,null):指保...
    青鳴閱讀 402評(píng)論 0 0
  • 引用類型 引用類型變量保存的僅僅是一個(gè)指針酌摇,指針指向堆內(nèi)存中保存對(duì)象的位置膝舅。 所以基本類型復(fù)制的時(shí)候僅僅復(fù)制值,復(fù)...
    DeeJay_Y閱讀 576評(píng)論 0 0
  • 1.引用類型有哪些窑多?非引用類型有哪些 基本類型值(Number仍稀、Boolean、string埂息、null和undef...
    saintkl閱讀 357評(píng)論 0 0
  • 1.引用類型有哪些技潘?非引用類型有哪些 基本類型值(數(shù)值、布爾值耿芹、null和undefined):指的是保存在棧內(nèi)存...
    Feiyu_有貓病閱讀 262評(píng)論 0 0
  • 1.引用類型有哪些崭篡?非引用類型有哪些 ECMA Script中規(guī)定,javascript的基本數(shù)據(jù)類型分為兩類吧秕,即...
    66dong66閱讀 298評(píng)論 0 0