一、如何判斷對(duì)象具有某屬性?
如:let obj={name:'zhangsan',age:21}
有以下方法 ( property 為屬性名的變量,實(shí)際上是key,鍵名):
1. property in obj
效果如圖:
in 運(yùn)算符
2. Reflect.has(obj, property)
效果如圖:
關(guān)于 Reflect:
① 它是JS的一個(gè)內(nèi)置對(duì)象,無構(gòu)造函數(shù),可以用它遍歷對(duì)象的key,如:Reflect.ownKeys(obj) // ['name', 'age']
;
② 也可以用它給對(duì)象添加一個(gè)屬性,如:Reflect.set(obj, 'hobby', ['singing','reading'])
, 返回值是true/false, 如圖:
③ 無論是自有屬性還是原型上有該屬性,Reflect.has(obj,property)
方法都會(huì)返回 true。
3. obj.hasOwnProperty(property)
可以判斷是否是對(duì)象的自有屬性,若有,返回true,否則返回 false(原型鏈上的返回false)。
所有繼承了 Object 的對(duì)象都會(huì)繼承到 hasOwnProperty 方法。用來檢測(cè)一個(gè)對(duì)象是否含有特定的自身屬性;和 in 運(yùn)算符不同,該方法會(huì)忽略掉那些從原型鏈上繼承到的屬性。
4. Object.hasOwn(obj, property)
是 Object 的方法,也是判斷自有屬性的。
不過要注意瀏覽器版本兼容問題,谷歌 93 以上版本才支持。不能貿(mào)然使用。
MDN推薦用該方法替換掉
hasOwnProperty
。原話是這樣的:“ 建議使用此方法替代 Object.hasOwnProperty(),因?yàn)樗m用于使用 Object.create(null) 創(chuàng)建的對(duì)象以及覆蓋了繼承的 hasOwnProperty() 方法的對(duì)象。盡管可以通過在外部對(duì)象上調(diào)用 Object.prototype.hasOwnProperty() 解決這些問題,但是 Object.hasOwn() 更加直觀?!?/p>
以下是運(yùn)行結(jié)果圖:
5. Object.prototype.hasOwnProperty.call
方法
判斷自有屬性:
Object.prototype.hasOwnProperty.call(obj2,'studentId')
二、遍歷數(shù)組的方法有哪些?
for,for...in,for...of,forEach,map
其中 forEach
會(huì)改變?cè)瓟?shù)組,map 會(huì)返回一個(gè)新的數(shù)組,得到的結(jié)果賦值給一個(gè)新的變量接收,如:
const arr=[1, 2];
const result = arr.map((item, index)=>{
return item + 1;
})
// result:[2,3] arr還是[1,2]
注意:
-
for...in
拿到的是數(shù)組下標(biāo),for...of
拿到的是數(shù)組的值; -
for...in
能遍歷對(duì)象,拿到的是對(duì)象的key
;for...of
不能遍歷對(duì)象,會(huì)報(bào)錯(cuò) obj is not iterable 不可迭代。
如果附帶其他功能的遍歷:
1、reduce
2、filter
3、some
4、indexOf
5、includes
這里博主只是單純羅列一下。
這些方法什么用處?可以菜鳥教程或mdn查一下,可以見這位同學(xué)的總結(jié)。文章來源:http://www.zghlxwxcb.cn/news/detail-400504.html
三、2023最新前端面經(jīng)及行情分析
點(diǎn)擊這里:前端面經(jīng)文章來源地址http://www.zghlxwxcb.cn/news/detail-400504.html
到了這里,關(guān)于前端基礎(chǔ)面試題:如何判斷對(duì)象是否具有某屬性?遍歷數(shù)組的方法有哪些?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!