引用類型與對象拷貝

1.引用類型有哪些袭厂?非引用類型有哪些

  • 基本類型值(數(shù)值墨吓、布爾值、symbol纹磺、null和undefined):指的是保存在棧內(nèi)存中的簡單數(shù)據(jù)段帖烘;
  • 引用類型值(對象、數(shù)組爽航、函數(shù)蚓让、正則):指的是那些保存在堆內(nèi)存中的對象,變量中保存的實(shí)際上只是一個(gè)指針讥珍,這個(gè)指針執(zhí)行內(nèi)存中的另一個(gè)位置历极,由該位置保存對象

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

var obj1 = {a:1, b:2};            // 開辟一個(gè)區(qū)域衷佃,把地址指針賦值給obj1
var obj2 = {a:1, b:2};            // 開辟一個(gè)區(qū)域趟卸,把地址指針賦值給obj2
console.log(obj1 == obj2);  // 把兩個(gè)區(qū)域的地址指針 ,進(jìn)行比較  
// 因?yàn)榈刂分羔槻幌嗤?所以輸出 false
console.log(obj1 = obj2);   // 把obj2的區(qū)域地址氏义,賦值給obj1 
// 結(jié)果兩者地址指針相同锄列,輸出同一區(qū)域內(nèi)容 
// 輸出 object{ a:1 , b:2 }
console.log(obj1 == obj2);  // 把區(qū)域地址進(jìn)行比較,輸出 true

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

var a = 1      
var b = 2
var c = { name: '饑人谷', age: 2 }
var d = [a, b, c]
// a = 1; b = 2 ; c = xx0033; d = xo0033( function(xx0033))
// xx0033 { name: '饑人谷', age: 2 }
// xo0033 [1,2,xx0033]

// 下面賦值惯悠,更改 
//  a = 11; b = 22 ; 
// c = xx0033{name:'hello';age:3}; 
// d = xo0033( function(xx0033{name:'hello';age:3}))
//( 因?yàn)閤x0033 指向同一區(qū)域,所以-
// c.name = 'hello' ; d[2]['age'] = 3 更改的為同一區(qū)域內(nèi)容)

var aa = a    // aa = 1 
var bb = b    // bb = 2 
var cc = c    // cc = xx0033;
var dd = d    // d = xo0033( function(xx0033))

a = 11
b = 22
c.name = 'hello'
d[2]['age'] = 3
// 賦值過程在注釋第4行

console.log(aa)     // 輸出 1
console.log(bb)     // 輸出 2
console.log(cc)     // object { name: 'hello', age: 3 }
console.log(dd)    // [1, 2, { name: 'hello', age: 3 }]

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

var a = 1  // a = 1
var c = { name: 'jirengu', age: 2 }  // 賦值給c地址指針 c = xx0033

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

f1(a) 
// 把a(bǔ)的值賦值給n  //  n = 1
// ++ n = 2  ( n = 2 )
// a 的值無變化
f2(c) 
// 把c的地址指針賦值給obj  // obj = xx0033
// ++obj.age
// xx0033 { name : 'jirengu' , age : 3 }
f1(c.age) 
// 把c.age的值賦值給n  c.age = 3
// 執(zhí)行 ++ n   
// a 的值無變化
console.log(a)   // 輸出 1
console.log(c)   // 輸出 object { name : 'jirengu' , age : 3 }

5.過濾如下數(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);
            filter(arr);
    }
}
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 newArray = []
    var j = 0
    for (var i = 0; i<arr.length; i++){
        if(arr[i] > 0 ){
        newArray[j] = arr[i]
        j++
        }
    }
    return newArray
    }
  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 obj = {
  name:'alutier',
  sex:'male',
  age:24,
  skills:{
    level5:'photoshop',
    level4:'English'
  },
  interesting:['guitar','nunchukus','sports']
}

//----------第一種方法----------
function deepCopy(arr){
  var newObj={};
  console.log(newObj);
  var i=0
  for ( var key in arr){
    if (typeof(arr[key])==='number' || 
        typeof(arr[key])==='string' ||
        typeof(arr[key])==='boolean'||
        arr[key]===null ||
        arr[key]===undefined ) 
       {newObj[key] = arr[key];}
    else {
      newObj[key] = deepCopy(arr[key])
   }
  }      
  return newArr;
}

//----------第二種方法----------
function deepCopy2(arr){
  return JSON.parse(JSON.stringify(arr))
}

var obj2 = deepCopy(obj);                     
var obj3 = deepCopy2(obj);    

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鸭蛙,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子筋岛,更是在濱河造成了極大的恐慌娶视,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件睁宰,死亡現(xiàn)場離奇詭異肪获,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)勋陪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進(jìn)店門贪磺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人诅愚,你說我怎么就攤上這事寒锚〗儆常” “怎么了?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵刹前,是天一觀的道長泳赋。 經(jīng)常有香客問我,道長喇喉,這世上最難降的妖魔是什么祖今? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮拣技,結(jié)果婚禮上千诬,老公的妹妹穿的比我還像新娘。我一直安慰自己膏斤,他們只是感情好徐绑,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著莫辨,像睡著了一般傲茄。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上沮榜,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天盘榨,我揣著相機(jī)與錄音,去河邊找鬼蟆融。 笑死草巡,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的型酥。 我是一名探鬼主播捷犹,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼冕末!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起侣颂,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤档桃,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后憔晒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體藻肄,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年拒担,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了嘹屯。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,090評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡从撼,死狀恐怖州弟,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤婆翔,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布拯杠,位于F島的核電站,受9級特大地震影響啃奴,放射性物質(zhì)發(fā)生泄漏潭陪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一最蕾、第九天 我趴在偏房一處隱蔽的房頂上張望依溯。 院中可真熱鬧,春花似錦瘟则、人聲如沸黎炉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拜隧。三九已至,卻和暖如春趁仙,著一層夾襖步出監(jiān)牢的瞬間洪添,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工雀费, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留干奢,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓盏袄,卻偏偏與公主長得像忿峻,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子辕羽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評論 2 355

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

  • 基本類型和引用類型# ECMAScript包含兩種不同的數(shù)據(jù)類型:基本類型值和引用類型值; 基本類型值指的是保存在...
    草鞋弟閱讀 499評論 0 0
  • 引用類型有哪些逛尚?非引用類型有哪些 引用類型:Object、Array刁愿、Date绰寞、RegExp、Function铣口、M...
    _Dot912閱讀 331評論 0 3
  • 1.引用類型有哪些滤钱?非引用類型有哪些? 引用類型:對象脑题、數(shù)組件缸、函數(shù)、正則表達(dá)式非引用類型:數(shù)值叔遂、字符串他炊、布爾值争剿、n...
    BAWScipes閱讀 176評論 0 0
  • 早晨給小妮子辦理好入園手續(xù),坐等她體檢歸來佑稠。見面后問她體檢抽血的時(shí)候秒梅,哭了沒有,她說哭了舌胶。沒抽血前伸出手來捆蜀,信誓旦...
    劉麗穎閱讀 469評論 3 2
  • 最近工作比較忙,然后最近也在嘗試著翻譯一篇關(guān)于CALayer非常詳解的一篇文章幔嫂,文章還是比較好也比較長的辆它,等整理完...
    HenryCheng閱讀 23,971評論 72 307