對(duì)象蹈丸、原始類型與引用類型成黄、遞歸函數(shù)、克隆

一逻杖、什么是對(duì)象:


生活中的一切事物都可以看成是對(duì)象


在js中奋岁,對(duì)象就是屬性的集合。同時(shí)它也是一種數(shù)據(jù)類型




(2)創(chuàng)建一個(gè)對(duì)象


? ? ? ? ? ? 1.var obj={}


? ? ? ? ? ? 2.var obj=new Object();


案例:創(chuàng)建一個(gè)人的對(duì)象荸百,并且為對(duì)象中添加屬性


? ? ? ? ? ? var person={


name:'張三',


age:18,


sex:'男'


? ? ? ? ? ? }


獲取對(duì)象中的屬性有兩種方法


1.對(duì)象名.屬性名


? ? ? ? ? ? ? ? ? person.name


2.對(duì)象名[屬性名]


? ? ? ? ? ? ? ? ? person[age]




(3)對(duì)象中屬性的類型


對(duì)象中的屬性可以是字符串闻伶,數(shù)字,也可以為函數(shù)够话。當(dāng)對(duì)象中的屬性值為函數(shù)的時(shí)候蓝翰,我們稱這個(gè)屬性為對(duì)象的方法


? ? ? ? ? ? 案例:var person={


name:'張三',


age:18,


sex:'男',


sayName:function(){


console.log('我的名字叫張三')


}


? ? ? ? ? ? }




? ? ? ? ? ? person.sayName();




//對(duì)象中的方法想要訪問(wèn)對(duì)象中的屬性要用this關(guān)鍵字


? ? ? ? ? 案例: var person={


name:'張三',


age:18,


sex:'男',


sayName:function(){


// console.log('我的名字叫'+name);name不會(huì)被輸出


//對(duì)象中的方法想要訪問(wèn)對(duì)象中的屬性必須要用this關(guān)鍵字


console.log('我的名字叫'+this.name);


}


? ? ? ? ? ? }




? ? ? ? ? ? person.sayName();




//3.對(duì)象中的屬性被替換


? ? ? ? ? ? ? ? 案例:var person={


name:'張三',


age:18,


sex:'男',


sayName:function(){


console.log('我的名字叫'+this.name);


}


? ? ? ? ? ? }


? ? ? ? ? ? ? ? cat.sayName();


cat.name='李四';


? ? ? ? ? ? ? ? console.log(cat.name);


? ? ? ? ? ? ? ? cat.sayName();




(4)給對(duì)象中的方法傳參


? ? ? ? ? ? 案例: var person={


name:'張三',


age:18,


sex:'男',


sayName:function(){


console.log('我的名字叫'+this.name);


},


count:function(a,b){


? ? ? ? ? ? ? ? ? ? console.log(a+b);


}


? ? ? ? ? ? }


? ? ? ? ? ? ? ? cat.sayName();


? ? ? ? ? ? ? ? cat.count(3,5);




(5)如何遍歷js中的對(duì)象


? ? ? ? ? ? ? 案例: var person={


name:'張三',


age:18,


sex:'男'


? ? ? ? ? ? ? ? }


? ? ? ? for(var key in person){


? ? ? ? //輸出對(duì)象中的屬性值


console.log(person[key]);


//輸出對(duì)象中的關(guān)鍵字


console.log(key);


? ? ? ? }






二、原始類型與引用類型:


(1)js6種數(shù)據(jù)類型


數(shù)值型


字符串型


布爾型


Null


Undefined


對(duì)象




我們可以按照這六種數(shù)據(jù)類型按照存儲(chǔ)方式分為兩類


1.原始類型:存儲(chǔ)的是值本身


*數(shù)值型


*字符串型


*布爾型


* Null


* Undefined


2.引用類型:儲(chǔ)存的是一個(gè)引用


*對(duì)象


*原始類型與引用類型的差異


(1)? //a相當(dāng)于把自己的值復(fù)制了一份給b,所以當(dāng)a的值改變的時(shí)候不會(huì)影響b的值的改變




? ? ? ? ? ? 案例: /*var a='hello world';


? ? ? ? ? ? var b=a;


? ? ? ? ? ? var a='hello javascript';


? ? ? ? ? ? console.log(a);//hello javascript


? ? ? ? ? ? console.log(b);//hello world*/




? ? ? 案例中值得類型為字符串女嘲,接下來(lái)把字符串換成對(duì)象




? ? ? ? ? ? ? ? var obj1={


? ? ? ? ? ? ? ? name:'jack',


? ? ? ? ? ? ? ? age:18


? ? ? ? ? ? ? ? }




? ? ? ? ? ? ? ? var obj2=obj1;


? ? ? ? ? ? ? ? obj1.name='rose';


? ? ? ? ? ? ? ? console.log(obj1.name);//rose


? ? ? ? ? ? ? ? console.log(obj2.name);//rose




//我們發(fā)現(xiàn)當(dāng)obj1的值改變畜份,obj2中的值也跟著變化。因?yàn)橐妙愋痛鎯?chǔ)的是一個(gè)地址欣尼,而不是值本身爆雹。兩個(gè)對(duì)象引用的是同一個(gè)地址停蕉。所有當(dāng)一個(gè)改變時(shí),另一個(gè)也會(huì)跟著變




(2)原始類型與引用類型比較的區(qū)別




接下來(lái)我們來(lái)看一下原始類型與引用類型比較的時(shí)候有什么來(lái)區(qū)別




? ? ? ? ? ? ? ? ? ? ? ? var str1 = 'hello world';


var str2 = 'hello world';


console.log(str1 == str2);? ? //true




var obj1 = {name:'xiaoming'};


var obj2 = {name:'xiaoming'};


console.log(obj1 == obj2);? ? //false




(3)原始類型與引用類型傳參的區(qū)別


原始類型:


? ? ? ? ? ? ? ? ? ? ? 案例:var str='hello world';


? ? ? ? ? ? ? ? ? ? ? function fun(s){


s='hello javascript';


? ? ? ? ? ? ? ? ? ? ? }


? ? ? ? ? ? ? ? ? ? ? fun(str);


? ? ? ? ? ? ? ? ? ? ? console.log(str);


在上面的代碼中我們將變量str傳給函數(shù)fun钙态,在fun內(nèi)部將參數(shù)將另一個(gè)字符串賦值給參數(shù)慧起,然后在函數(shù)外面輸出str,發(fā)現(xiàn)str的值并沒(méi)有變




引用類型:


? ? ? ? ? ? ? ? ? ? ? ? 案例:? var obj={name:'jack',age:18};


? ? ? ? ? ? ? ? ? function fun(o){


? ? ? ? ? ? ? ? ? ? ? o.name='rose';


? ? ? ? ? ? ? ? ? }


? ? ? ? ? ? ? ? ? fun(obj);


? ? ? ? ? ? ? ? ? console.log(obj);




將參數(shù)換成引用類型后,我們發(fā)現(xiàn)再次輸出obj的時(shí)候册倒,它的值已經(jīng)變成了函數(shù)中賦的值蚓挤,這是因?yàn)樵碱愋蛡鲄⒌臅r(shí)候,實(shí)參是形參的副本驻子,改變形參的時(shí)候不會(huì)影響實(shí)參灿意,而應(yīng)用類型傳參的時(shí)候,形參和實(shí)參的對(duì)象都指向一個(gè)引用拴孤,這樣當(dāng)我們修改形參的值的時(shí)候脾歧,其實(shí)是操作了內(nèi)存中的對(duì)象,所以函數(shù)外部變量的值也就跟著變化了演熟。




三鞭执、遞歸函數(shù)


//編寫一個(gè)函數(shù)n,調(diào)用這個(gè)函數(shù)時(shí),倒敘輸出1-n之間的所有正整數(shù)芒粹。比如輸入5兄纺,會(huì)輸出5,4,3,2,1


? ? ? ? ? /*function print(n){


? ? ? ? ? for(var i=n;i>0;i--){


? ? ? ? ? console.log(i);


? ? ? ? ? }


? ? ? ? ? }


? ? ? ? ? print(5);*/


//以上效果還可以用遞歸實(shí)現(xiàn):


? ? ? ? ? //遞歸:在函數(shù)內(nèi)再次調(diào)用該函數(shù)


? ? ? ? /*function show(n){


? ? ? ? ? ? console.log(n);


? ? ? ? ? ? if(n>1){


? ? ? ? ? ? show(--n);


? ? ? ? ? ? }


? ? ? ? }


? ? ? ? show(5);*/








//計(jì)算階乘:


//5的階乘:5*4*3*2*1




//用for循環(huán)的方式


? ? ? ? ? ? 案例: function count(n){


? ? ? ? ? ? ? ? var result=1;


? ? ? ? ? ? ? ? ? for(var i=n;i>0;i--){


? ? ? ? ? ? ? ? ? result=result*i;


? ? ? ? ? ? ? ? ? }


? ? ? ? ? ? ? ? ? return result;


? ? ? ? ? ? ? }


? ? ? ? ? ? console.log(count(5));




//用階乘的方式:




? ? ? ? ? ? ? ? 案例: function counts(n){


? ? ? ? ? ? ? ? ? ? ? if(n==1){


? ? ? ? ? ? ? ? ? ? ? return n;


? ? ? ? ? ? ? ? ? ? ? }else{


? ? ? ? ? ? ? ? ? ? ? return n*count(n-1);


? ? ? ? ? ? ? ? ? ? ? }


? ? ? ? ? ? ? ? ? }


? ? ? ? ? ? ? ? ? console.log(count(5));


四、克隆


案例:


var obj={name:'jack',age:18}


function clone( ){


? ? ? ? var obj1={ }


? ? ? ? for(var key in obj){


? ? ? ? ? ? ? obj1[key]=obj[key];


? ? }


? ? return obj1;


}


var obj1=clone( );


console.log(obj1);


obj.name='rose';


console.log(obj1);

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末化漆,一起剝皮案震驚了整個(gè)濱河市估脆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌座云,老刑警劉巖疙赠,帶你破解...
    沈念sama閱讀 211,348評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異朦拖,居然都是意外死亡圃阳,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門璧帝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)捍岳,“玉大人,你說(shuō)我怎么就攤上這事睬隶÷嗉校” “怎么了?”我有些...
    開封第一講書人閱讀 156,936評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵苏潜,是天一觀的道長(zhǎng)银萍。 經(jīng)常有香客問(wèn)我,道長(zhǎng)恤左,這世上最難降的妖魔是什么贴唇? 我笑而不...
    開封第一講書人閱讀 56,427評(píng)論 1 283
  • 正文 為了忘掉前任贰锁,我火速辦了婚禮,結(jié)果婚禮上滤蝠,老公的妹妹穿的比我還像新娘。我一直安慰自己授嘀,他們只是感情好物咳,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蹄皱,像睡著了一般览闰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上巷折,一...
    開封第一講書人閱讀 49,785評(píng)論 1 290
  • 那天压鉴,我揣著相機(jī)與錄音,去河邊找鬼锻拘。 笑死油吭,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的署拟。 我是一名探鬼主播婉宰,決...
    沈念sama閱讀 38,931評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼推穷!你這毒婦竟也來(lái)了心包?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,696評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤馒铃,失蹤者是張志新(化名)和其女友劉穎蟹腾,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體区宇,經(jīng)...
    沈念sama閱讀 44,141評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡娃殖,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了萧锉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片珊随。...
    茶點(diǎn)故事閱讀 38,625評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖柿隙,靈堂內(nèi)的尸體忽然破棺而出叶洞,到底是詐尸還是另有隱情,我是刑警寧澤禀崖,帶...
    沈念sama閱讀 34,291評(píng)論 4 329
  • 正文 年R本政府宣布衩辟,位于F島的核電站,受9級(jí)特大地震影響波附,放射性物質(zhì)發(fā)生泄漏艺晴。R本人自食惡果不足惜昼钻,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望封寞。 院中可真熱鬧然评,春花似錦、人聲如沸狈究。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)抖锥。三九已至亿眠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間磅废,已是汗流浹背纳像。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拯勉,地道東北人竟趾。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像谜喊,于是被迫代替她去往敵國(guó)和親潭兽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評(píng)論 2 348