對(duì)象莫换、原始類(lèi)型與引用類(lèi)型、遞歸函數(shù)赫冬、克隆

對(duì)象:

一浓镜、什么是對(duì)象:

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

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

(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ì)象中屬性的類(lèi)型

對(duì)象中的屬性可以是字符串听隐,數(shù)字补鼻,也可以為函數(shù)。當(dāng)對(duì)象中的屬性值為函數(shù)的時(shí)候,我們稱(chēng)這個(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);

? ? ? ? }

二风范、原始類(lèi)型與引用類(lèi)型:

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

數(shù)值型

字符串型

布爾型

Null

Undefined

對(duì)象

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

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

*數(shù)值型

*字符串型

*布爾型

* Null

* Undefined

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

*對(duì)象

*原始類(lèi)型與引用類(lèi)型的差異

(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)型為字符串咨跌,接下來(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)橐妙?lèi)型存儲(chǔ)的是一個(gè)地址锌半,而不是值本身。兩個(gè)對(duì)象引用的是同一個(gè)地址寇漫。所有當(dāng)一個(gè)改變時(shí)刊殉,另一個(gè)也會(huì)跟著變

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

接下來(lái)我們來(lái)看一下原始類(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)原始類(lèi)型與引用類(lèi)型傳參的區(qū)別

原始類(lèi)型:

? ? ? ? ? ? ? ? ? ? ? 案例: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)有變

引用類(lèi)型:

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

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

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

? ? ? ? ? ? ? ? ? }

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

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

將參數(shù)換成引用類(lèi)型后记焊,我們發(fā)現(xiàn)再次輸出obj的時(shí)候,它的值已經(jīng)變成了函數(shù)中賦的值栓撞,這是因?yàn)樵碱?lèi)型傳參的時(shí)候遍膜,實(shí)參是形參的副本,改變形參的時(shí)候不會(huì)影響實(shí)參瓤湘,而應(yīng)用類(lèi)型傳參的時(shí)候瓢颅,形參和實(shí)參的對(duì)象都指向一個(gè)引用,這樣當(dāng)我們修改形參的值的時(shí)候弛说,其實(shí)是操作了內(nèi)存中的對(duì)象挽懦,所以函數(shù)外部變量的值也就跟著變化了。

三剃浇、遞歸函數(shù)

//編寫(xiě)一個(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閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件窒朋,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡蝗岖,警方通過(guò)查閱死者的電腦和手機(jī)侥猩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)抵赢,“玉大人欺劳,你說(shuō)我怎么就攤上這事唧取。” “怎么了划提?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵枫弟,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我鹏往,道長(zhǎng)淡诗,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任伊履,我火速辦了婚禮韩容,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘湾碎。我一直安慰自己宙攻,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布介褥。 她就那樣靜靜地躺著座掘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪柔滔。 梳的紋絲不亂的頭發(fā)上溢陪,一...
    開(kāi)封第一講書(shū)人閱讀 51,482評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音睛廊,去河邊找鬼形真。 笑死,一個(gè)胖子當(dāng)著我的面吹牛超全,可吹牛的內(nèi)容都是我干的咆霜。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼嘶朱,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蛾坯!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起疏遏,我...
    開(kāi)封第一講書(shū)人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤脉课,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后财异,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體倘零,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年戳寸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了呈驶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡疫鹊,死狀恐怖俐东,靈堂內(nèi)的尸體忽然破棺而出跌穗,到底是詐尸還是另有隱情订晌,我是刑警寧澤虏辫,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站锈拨,受9級(jí)特大地震影響砌庄,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜奕枢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一娄昆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧缝彬,春花似錦萌焰、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至一疯,卻和暖如春撼玄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背墩邀。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工掌猛, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人眉睹。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓荔茬,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親竹海。 傳聞我的和親對(duì)象是個(gè)殘疾皇子慕蔚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

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