引用類型對象拷貝

1.引用類型有哪些出刷?非引用類型有哪些

  • 基本類型值(undefined,null,Boolean,String,Number,Symbol):指的是保存在棧內存中的簡單數(shù)據(jù)段棱诱;
  • 引用類型值(對象、數(shù)組、函數(shù)、正則):指的是那些保存在堆內存中的對象,變量中保存的實際上只是一個指針探橱,這個指針執(zhí)行內存中的另一個位置,由該位置保存對象

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

var obj1 = {a:1, b:2}; // 將 {a:1, b:2}這個對象的地址賦值給obj1 
var obj2 = {a:1, b:2}; // 將 {a:1, b:2}這個對象的地址(與obj1指向的地址不是同一個)賦值給obj2
console.log(obj1 == obj2); // 不是同一個地址隧膏,所以輸出false
console.log(obj1 = obj2); // 將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  // a保存的數(shù)值胞枕,不是指針,a=1
var bb = b //
var cc = c // 把c指向的對象的地址拷貝給cc
var dd = d // 

a = 11 //只改變a的值
b = 22
c.name = 'hello' //把c指向的地址中的對象的值改了魏宽,因此也會影響cc
d[2]['age'] = 3 // 

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

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

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

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

f1(a)  // n=a,a=1, ++n=2, a=1
f2(c)  // 傳入c指向對象的地址,其中的++age队询, age=3
f1(c.age) // n=c.age(數(shù)值)派桩, c.age=2 , ++n=3, c.age=2
console.log(a) // 1
console.log(c) //{ name: 'jirengu', age: 3 }

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

var arr = [3,1,0,-1,-3,2,-5]
function filter(arr){
      var i;
       for (i=0;i<arr.length;i++){
            if(arr[i]<=0){
                   arr.splice(i,1);  //slice() \ splice()
                   filter(arr);
              }
       }
      // return 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 newArr=[];
       for(var i=0,j=0; i< arr.length; i++){
                     if(arr[i]>0){
                             newArr[j] = arr[i];
                             j++;
                        }
            }
            return newArr;
}
var arr2 = filter(arr);
console.log(arr2); // [3,1,2]
console.log(arr);  // [3,1,0,-1,-2,2,-5]

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

var obj={a:1, b:2, info:{name: 'asdf'}};

function dcopy(obj){
     var newObj={};  //只是聲明newObj為一個對象,而不是[清空對象](http://www.cnblogs.com/isykw/p/6869084.html)
如果attr是一個對象肠缨,那么遞歸調用dcopy(),生成一個新的2號newObj盏阶,return給1號
     for (var attr in obj){
        if(obj.hasOwnProperty(attr)){ //自己的屬性 
              if(obj[attr] instanceof Object){
                       newObj[attr]=dcopy(obj[attr]);  1號newObj
                    }
              else {
                  newObj[attr] = obj[attr];
                 }
              }
              
       }
    return newObj;
}
obj.info.name='lala'
console.log(obj)
var result=dcopy(obj)
console.log(result)
function dcopy2(obj){ //JSON.stringify將對象轉換為字符串晒奕,再用JSON.parse把這個字符串轉換為對象
       return newObj = JSON.parse(JSON.stringify(obj));
}

https://www.zhihu.com/question/23031215

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市名斟,隨后出現(xiàn)的幾起案子脑慧,更是在濱河造成了極大的恐慌,老刑警劉巖砰盐,帶你破解...
    沈念sama閱讀 222,378評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件闷袒,死亡現(xiàn)場離奇詭異,居然都是意外死亡岩梳,警方通過查閱死者的電腦和手機囊骤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評論 3 399
  • 文/潘曉璐 我一進店門晃择,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人也物,你說我怎么就攤上這事宫屠。” “怎么了滑蚯?”我有些...
    開封第一講書人閱讀 168,983評論 0 362
  • 文/不壞的土叔 我叫張陵浪蹂,是天一觀的道長。 經(jīng)常有香客問我告材,道長坤次,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,938評論 1 299
  • 正文 為了忘掉前任斥赋,我火速辦了婚禮缰猴,結果婚禮上,老公的妹妹穿的比我還像新娘灿渴。我一直安慰自己洛波,他們只是感情好,可當我...
    茶點故事閱讀 68,955評論 6 398
  • 文/花漫 我一把揭開白布骚露。 她就那樣靜靜地躺著蹬挤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪棘幸。 梳的紋絲不亂的頭發(fā)上焰扳,一...
    開封第一講書人閱讀 52,549評論 1 312
  • 那天,我揣著相機與錄音误续,去河邊找鬼吨悍。 笑死,一個胖子當著我的面吹牛蹋嵌,可吹牛的內容都是我干的育瓜。 我是一名探鬼主播,決...
    沈念sama閱讀 41,063評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼栽烂,長吁一口氣:“原來是場噩夢啊……” “哼躏仇!你這毒婦竟也來了?” 一聲冷哼從身側響起腺办,我...
    開封第一講書人閱讀 39,991評論 0 277
  • 序言:老撾萬榮一對情侶失蹤焰手,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后怀喉,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體书妻,經(jīng)...
    沈念sama閱讀 46,522評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,604評論 3 342
  • 正文 我和宋清朗相戀三年躬拢,在試婚紗的時候發(fā)現(xiàn)自己被綠了躲履。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片见间。...
    茶點故事閱讀 40,742評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖崇呵,靈堂內的尸體忽然破棺而出缤剧,到底是詐尸還是另有隱情,我是刑警寧澤域慷,帶...
    沈念sama閱讀 36,413評論 5 351
  • 正文 年R本政府宣布荒辕,位于F島的核電站,受9級特大地震影響犹褒,放射性物質發(fā)生泄漏抵窒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,094評論 3 335
  • 文/蒙蒙 一叠骑、第九天 我趴在偏房一處隱蔽的房頂上張望李皇。 院中可真熱鬧,春花似錦宙枷、人聲如沸掉房。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽卓囚。三九已至,卻和暖如春诅病,著一層夾襖步出監(jiān)牢的瞬間哪亿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評論 1 274
  • 我被黑心中介騙來泰國打工贤笆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蝇棉,地道東北人。 一個月前我還...
    沈念sama閱讀 49,159評論 3 378
  • 正文 我出身青樓芥永,卻偏偏與公主長得像篡殷,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子埋涧,可洞房花燭夜當晚...
    茶點故事閱讀 45,747評論 2 361

推薦閱讀更多精彩內容

  • 1.引用類型有哪些贴唇?非引用類型有哪些非引用類型值,即基本類型值(數(shù)值飞袋,布爾值,undefined链患,null):指保...
    青鳴閱讀 405評論 0 0
  • 引用類型 引用類型變量保存的僅僅是一個指針麻捻,指針指向堆內存中保存對象的位置纲仍。 所以基本類型復制的時候僅僅復制值呀袱,復...
    DeeJay_Y閱讀 579評論 0 0
  • 1.引用類型有哪些?非引用類型有哪些 基本類型值(Number郑叠、Boolean夜赵、string、null和undef...
    saintkl閱讀 358評論 0 0
  • 1.引用類型有哪些乡革?非引用類型有哪些 基本類型值(數(shù)值寇僧、布爾值、null和undefined):指的是保存在棧內存...
    Feiyu_有貓病閱讀 263評論 0 0
  • 1.引用類型有哪些沸版?非引用類型有哪些 ECMA Script中規(guī)定嘁傀,javascript的基本數(shù)據(jù)類型分為兩類,即...
    66dong66閱讀 298評論 0 0