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

  • 引用類型有哪些球切?非引用類型有哪些谷誓?

JS中的數(shù)據(jù)類型分為基本類型和引用類型。
基本類型:數(shù)值(number)吨凑、字符串(string)捍歪、布爾值(Boolean)、null鸵钝、undefined糙臼。
基本類型的訪問(wèn)是按值訪問(wèn)的,就是說(shuō)你可以操作保存在變量中的實(shí)際的值蒋伦。

引用類型:除去上面的基本類型,其余的都是引用類型或稱為是對(duì)象焚鹊。對(duì)象是屬性和方法的集合痕届。也就是說(shuō)引用類型可以擁有屬性和方法,屬性又可以包含基本類型和引用類型末患。

  • 如下代碼輸出什么研叫?為什么?

var obj1 = {a:1, b:2};
var obj2 = {a:1, b:2};
console.log(obj1 == obj2);    //false
console.log(obj1 = obj2);    // Object  {a:1,b:2}
console.log(obj1 == obj2);    //true
//obj1和obj2是兩個(gè)對(duì)象璧针,對(duì)象的比較是棧區(qū)中對(duì)象地址的比較嚷炉,obj1和obj2是兩個(gè)獨(dú)立的對(duì)象,棧區(qū)對(duì)象地址不一樣探橱,因此輸出false申屹;
//對(duì)象之間的賦值是棧區(qū)地址的賦值绘证,把obj2棧區(qū)地址賦給obj1,obj1和obj2就擁有了相同的對(duì)象地址哗讥,指向同一個(gè)對(duì)象嚷那,故輸出Object  {a:1,b:2};
//由于經(jīng)過(guò)obj1=obj2杆煞,obj1和obj2擁有了相同的對(duì)象地址魏宽,故輸出true;
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: 2 }
console.log(dd)    //[1,2,Object {name: 'hello', age: 3 }]

/*基本類型之間的賦值决乎,在從一個(gè)變量向另一個(gè)變量賦值基本類型時(shí)
會(huì)在該變量上創(chuàng)建一個(gè)新值队询,然后再把該值復(fù)制到為新變量分配的位置上,
此后兩個(gè)變量之間相互獨(dú)立构诚,互不影響蚌斩,因此aa=1,bb=2唤反,此后a=11凳寺,b=22,并不影響
aa彤侍、bb的值*/

/*c是一個(gè)對(duì)象肠缨,c向cc賦值時(shí),賦的是對(duì)象的地址盏阶,因此cc和c有相同的對(duì)象地址晒奕,指向同一個(gè)對(duì)象c*/

/*d是一個(gè)數(shù)組,a名斟、b的賦值原理同上脑慧,c是一個(gè)對(duì)象
c.name='hello' 和 d[2]['age']=3改變了c中的對(duì)象,但是地址沒(méi)變砰盐,依然指向這個(gè)對(duì)象
因此有這一個(gè)輸出*/
var a = 1
var c = { name: 'jirengu', age: 2 }

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

f1(a)    //隱式var n=a闷袒;
f2(c)     //隱式var obj=c,把c的地址賦給obj岩梳;
f1(c.age)     //隱式 var n=c.age囊骤;
console.log(a)    //1; 
console.log(c)    //Object {name: 'jirengu', age: 2}

 //函數(shù)操作后都沒(méi)有return,運(yùn)行完成后函數(shù)銷(xiāo)毀冀值,并未改變a與c的值
  • 過(guò)濾如下數(shù)組也物,只保留正數(shù),直接在原數(shù)組上操作

var arr = [3,1,0,-1,-3,2,-5]
function filter(arr){
}
filter(arr)
console.log(arr) // [3,1,2]
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);    //從數(shù)組第i個(gè)開(kāi)始刪除列疗,刪除個(gè)數(shù)1個(gè)(arr[i]被刪掉)
          filter(arr);    //刪除后滑蚯,數(shù)組序號(hào)發(fā)生變化,重新執(zhí)行一次函數(shù)
      }
  }
  return arr;
}
filter(arr)
console.log(arr)
  • 過(guò)濾如下數(shù)組,只保留正數(shù)告材,原數(shù)組不變坤次,生成新數(shù)組

var arr = [3,1,0,-1,-3,2,-5]
function filter(arr){
}
var arr2 = filter(arr)
console.log(arr2) // [3,1,2]
console.log(arr)  // [3,1,0,-1,-2,2,-5]
var arr = [3,1,0,-1,-3,2,-5]
function filter(arr){
    var newArr = [];
    var k = 0;
    for (i=0; i<arr.length;i++) {
        if (arr[i]>0) {
            newArr[k] = arr[i];
            k++;
        }
    }
    return newArr;
}
var arr2 = filter(arr)
console.log(arr2) 
console.log(arr) 
  • 寫(xiě)一個(gè)深拷貝函數(shù),用兩種方式實(shí)現(xiàn)

//方法1
var obj = {};
function deepCopy (obj) {
    var newObj = {};
    for (i=0; i<obj.length; i++) {
        if (typeof obj[i] === "number" || typeof obj[i] === "string" || typeof obj[i] === "boolean" || obj[i] === null || typeof obj[i] === "undefined") {
            newObj[i] = obj[i];
        }else   {
            newObj[i] =  deepCopy(obj[i]);
        }
    }
    return newObj;
}
//方法2
var obj = {};
var newObj = JSON.parse(JSON.stringify(obj));
//JSON.stringify(): 將對(duì)象解析為字符串创葡;
//JSON.parse(): 將字符串解析為對(duì)象浙踢;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市灿渴,隨后出現(xiàn)的幾起案子洛波,更是在濱河造成了極大的恐慌,老刑警劉巖骚露,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蹬挤,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡棘幸,警方通過(guò)查閱死者的電腦和手機(jī)焰扳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)误续,“玉大人吨悍,你說(shuō)我怎么就攤上這事√G叮” “怎么了育瓜?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)栽烂。 經(jīng)常有香客問(wèn)我躏仇,道長(zhǎng),這世上最難降的妖魔是什么腺办? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任焰手,我火速辦了婚禮,結(jié)果婚禮上怀喉,老公的妹妹穿的比我還像新娘书妻。我一直安慰自己,他們只是感情好躬拢,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布躲履。 她就那樣靜靜地躺著,像睡著了一般估灿。 火紅的嫁衣襯著肌膚如雪崇呵。 梳的紋絲不亂的頭發(fā)上缤剧,一...
    開(kāi)封第一講書(shū)人閱讀 51,462評(píng)論 1 302
  • 那天馅袁,我揣著相機(jī)與錄音,去河邊找鬼荒辕。 笑死汗销,一個(gè)胖子當(dāng)著我的面吹牛犹褒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播弛针,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼叠骑,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了削茁?” 一聲冷哼從身側(cè)響起宙枷,我...
    開(kāi)封第一講書(shū)人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎茧跋,沒(méi)想到半個(gè)月后慰丛,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡瘾杭,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年诅病,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粥烁。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡贤笆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出讨阻,到底是詐尸還是另有隱情芥永,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布变勇,位于F島的核電站恤左,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏搀绣。R本人自食惡果不足惜飞袋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望链患。 院中可真熱鬧巧鸭,春花似錦、人聲如沸麻捻。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)贸毕。三九已至郑叠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間明棍,已是汗流浹背乡革。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人沸版。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓嘁傀,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親视粮。 傳聞我的和親對(duì)象是個(gè)殘疾皇子细办,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

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

  • 1.引用類型有哪些?非引用類型有哪些 引用類型: 對(duì)象 object 數(shù)組 函數(shù) 正則非引用類型...
    怎么昵稱閱讀 244評(píng)論 0 0
  • 1.引用類型有哪些蕾殴?非引用類型有哪些2.如下代碼輸出什么笑撞?為什么? var obj1 = {a:1, b:2}; ...
    Rising_suns閱讀 251評(píng)論 0 0
  • 1.引用類型有哪些?非引用類型有哪些 基本類型值(數(shù)值钓觉、字符串娃殖、布爾值、null和undefined):指的是保存...
    101架鋼琴閱讀 180評(píng)論 0 0
  • 基本類型和引用類型# ECMAScript包含兩種不同的數(shù)據(jù)類型:基本類型值和引用類型值; 基本類型值指的是保存在...
    草鞋弟閱讀 497評(píng)論 0 0
  • 1.引用類型有哪些议谷?非引用類型有哪些 非引用類型值炉爆,即基本類型值(數(shù)值,布爾值卧晓,undefined芬首,null):指...
    LINPENGISTHEONE閱讀 208評(píng)論 0 0