對象進階
1.this
構(gòu)造函數(shù)里面的this,用于給類定義成員(屬性和方法)
方法里面的this,指向方法的調(diào)用者
箭頭函數(shù)中沒有this,如果在箭頭函數(shù)中使用了this,會向外層尋找this的指向
如果所有的外層都沒有this,最終會指向window對象
注意:用于var定義的成員(變量和方法)都會成為window對象的成員
解決this指向問題:
方式一:備份this
方式二:使用箭頭函數(shù)
2.call apply bind
call apply bind 更改方法里面this的指向
使用call()改變方法里面,this的指向
call()方法的第一個參數(shù)必須是指定的對象,方法的原有參數(shù),挨個放在后面
使用apply(),也可以改變方法里面this的指向,第一個參是指定的對象,方法的原有參數(shù),統(tǒng)一放到第二個數(shù)組參數(shù)中。
使用bind(),也可以改變方法里面this的指向,用法給call()一樣
call()是直接運行方法,bind()是返回新的方法,然后再重新調(diào)用。
3.將一個對象轉(zhuǎn)為字符串
獲取對象的屬性值,有兩種方式:
對象名.屬性名
對象名["屬性名"]
//定義一個手機對象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)出對象里面的所有的key,(key就是屬性名)
在ES6中新增了獲取對象所有key的方法 -> ECMAScript2015 其實就是最新版本的javascript標準
Object.keys(指定的對象),該方法可以獲取指定對象的所有key,返回值是一個數(shù)組
Object.values(指定的對象),該方法可以獲取指定對象的所有的value,返回值是一個數(shù)組
4.將字符串轉(zhuǎn)為對象
//定義一個字符串letstr="name=小米10&color=紅色&size=1000*200*500&price=2999"http://轉(zhuǎn)成一個對象{name:"小米10",color:'紅色',size:'1000*200*500',price:'2999'}