如果 a.b ,那么a就是對(duì)象虹茶,b是a的屬性
如果 a.c()疑故,那么a就是對(duì)象撮奏,c是a的方法
對(duì)象就是擁有一組屬性和方法的集合
定義對(duì)象有兩種方式:1.采用字面量賦值方式直接定義。2.采用構(gòu)造函數(shù)的方式new一個(gè)對(duì)象
1.采用字面量賦值方式定義對(duì)象
let obj={
????????//定義屬性
????????//定義方法
}
通過對(duì)象名.屬性当宴,調(diào)用對(duì)象的屬性畜吊,可以獲取屬性的值,也可以修改屬性的值户矢,也可以添加新的屬性
通過對(duì)象名.方法()玲献,調(diào)用對(duì)象的方法,執(zhí)行方法里面的代碼
2.采用構(gòu)造函數(shù)的方式new一個(gè)對(duì)象
可以直接new一個(gè)Object對(duì)象
let????obj = new????Object()
可以定義一個(gè)構(gòu)造函數(shù)梯浪,再出new這個(gè)構(gòu)造函數(shù)的對(duì)象
構(gòu)造函數(shù)也稱為:類捌年,是自定義的一種類型
//定義學(xué)生類
functionStudent(形參...){
????????//定義屬性(必須使用this.)
????????//定義方法(必須使用this.)
}
//創(chuàng)建學(xué)生對(duì)象
let????s1 = new????Student (實(shí)參...)
3.對(duì)象進(jìn)階
this
構(gòu)造函數(shù)里面的this,用于給類定義成員(屬性和方法)
方法里面的this挂洛,指向方法的調(diào)用者
箭頭函數(shù)中沒有this礼预,如果在箭頭函數(shù)中使用了this,會(huì)向外層尋找this的指向
如果所有的外層都沒有this虏劲,最終會(huì)指向window對(duì)象
注意:用于var定義的成員(變量和方法)都會(huì)成為window對(duì)象的成員
解決this指向問題:
方式一:備份this
方式二:使用箭頭函數(shù)
call apply bind
call apply bind 更改方法里面this的指向
1.使用call()改變方法里面托酸,this的指向call()方法的第一個(gè)參數(shù)必須是指定的對(duì)象,方法的原有參數(shù)伙单,挨個(gè)放在后面
2.使用apply()获高,也可以改變方法里面this的指向,第一個(gè)參是指定的對(duì)象吻育,方法的原有參數(shù)念秧,統(tǒng)一放到第二個(gè)數(shù)組參數(shù)中。
3.使用bind()布疼,也可以改變方法里面this的指向摊趾,用法給call()一樣call()是直接運(yùn)行方法,bind()是返回新的方法游两,然后再重新調(diào)用砾层。
將一個(gè)對(duì)象轉(zhuǎn)為字符串
獲取對(duì)象的屬性值,有兩種方式:
1.對(duì)象名.屬性名
2.對(duì)象名["屬性名"]
//定義一個(gè)手機(jī)對(duì)象
? ??letphone={
? ??????????name:"小米10",
? ??????????color:'紅色',
? ??????????size:'1000*200*500',price:'2999'
? }
//轉(zhuǎn)成下面的字符串
//"name=小米10&color=紅色&size=1000*200*500&price=2999"
for in 循環(huán)贱案,可以循環(huán)出對(duì)象里面的所有的key肛炮,(key就是屬性名)
在ES6中新增了獲取對(duì)象所有key的方法 -> ECMAScript2015 其實(shí)就是最新版本的javascript標(biāo)準(zhǔn)
Object.keys(指定的對(duì)象),該方法可以獲取指定對(duì)象的所有key宝踪,返回值是一個(gè)數(shù)組
Object.values(指定的對(duì)象)侨糟,該方法可以獲取指定對(duì)象的所有的value,返回值是一個(gè)數(shù)組