技術(shù)頻道導(dǎo)航
HTML/CSS
.NET技術(shù)
IIS技術(shù)
PHP技術(shù)
Js/JQuery
Photoshop
Fireworks
服務(wù)器技術(shù)
操作系統(tǒng)
網(wǎng)站運(yùn)營(yíng)
卡卡网是专业的网站测速平台,网速测试,测试网站速度,就来卡卡网 ~
问题反馈网络日志

DiyVM:香港VPS驚爆價(jià)36元一月
【UFOVPS】香港VPS超低延遲雙向CN2
CN2 GIA/1000Mbps $111/月
服務(wù)器 9.9/月 續(xù)費(fèi)同價(jià)
服務(wù)器 9.9/月 續(xù)費(fèi)同價(jià)

一一云主機(jī) 24元 3折起一一
香港HKBN大帶寬VPS,穩(wěn)定高速,原生IP
海外CN2云 低至$2.5/月
海外云低至2折 298/年
一一一云主機(jī) 26元起一一一

海外主機(jī) 5M CN2 低至$2/月
恒創(chuàng)科技 一 海外服務(wù)器 ● 高速穩(wěn)定
★官方產(chǎn)品 ★高價(jià)收量
10M CN2海外云VPS 53元/月
不限流VPS 5M CN2 $1.8/月

【菠蘿云】香港4G內(nèi)存99元,馬上開(kāi)通
飛碟云:動(dòng)態(tài)BGP防攻擊SSD云服務(wù)器
★高價(jià)收量 ★誠(chéng)邀SEO站長(zhǎng)
5折活動(dòng)中。。海外服務(wù)器 CN2 GIA
國(guó)內(nèi)SSD云服務(wù)器,BGP線路,穩(wěn)定高速

實(shí)力產(chǎn)品變現(xiàn)
實(shí)力產(chǎn)品變現(xiàn)
實(shí)力產(chǎn)品變現(xiàn)
實(shí)力產(chǎn)品變現(xiàn)
實(shí)力產(chǎn)品變現(xiàn)

贊助商

分類目錄

贊助商

最新文章

本文介绍我们要用jQuery操作HTML,移除某class的div标签,但保留内...
在书写正则表达式时,* + ? 符号非常常见,但是它们又比较容易混淆。本文将用一...
本文我将给大家介绍如何用JS+CSS来实现可移动显示的图片背景效果。 
在一些商品展示的网页里,我们经常看到图片放大的效果。本文就给大家介绍一下,如何用...
本文介绍如何分别使用JS和jQuery两种方法来实现点击按钮复制文字到剪贴板,只...
本文介绍如何使用jquery-resizable调整表格(table)列宽。
本文介绍如何使用jquery-resizable插件调整左右/上下窗格大小。

搜索

5種方法檢查JS對(duì)象中是否存在某個(gè)鍵(屬性)

作者:admin    時(shí)間:2022-5-12 19:17:54    瀏覽:

檢索鍵是在JS對(duì)象操作中常常用到的技術(shù),我們要操作一個(gè)鍵的時(shí)候,為了程序流程嚴(yán)密,往往先判斷鍵的存在,再進(jìn)一步執(zhí)行下面的程序。這正是本文要介紹的,5種方法檢查JS對(duì)象中是否存在某個(gè)鍵(屬性)。

你還可以看看如下類似的文章:

5種方法檢查JS對(duì)象中是否存在某個(gè)鍵(屬性) 

假設(shè)有以下嵌套對(duì)象,并且想要檢索name屬性:

  1. const site = { 
  2.     webkaka: { 
  3.         name: '卡卡網(wǎng)',
  4. url: 'howtostagehomes.com' 
  5.     } 
  6. }; 

使用 typeof 運(yùn)算符

最簡(jiǎn)單的方法是檢查值是否等于 undefined 。

  1. if (typeof site.webkaka.name !== 'undefined') { 
  2.     console.log("鍵存在");
  3. }

demodownload

輸出

鍵存在

webkaka是現(xiàn)有的對(duì)象,如果該對(duì)象不存在,會(huì)捕獲一個(gè) TypeError 錯(cuò)誤:

index4.html:20 Uncaught TypeError: Cannot read properties of undefined (reading 'name')

檢查真實(shí)性

還可以使用 AND 運(yùn)算符連接變量以創(chuàng)建布爾值。

  1. if (site && site.webkaka && site.webkaka.name) { 
  2.     console.log("鍵存在");
  3. } 

demodownload

輸出:

鍵存在

使用此解決方案,可以繞過(guò) TypeError,但是,可以看到,如果對(duì)象嵌套很深,檢查每一層,很快就會(huì)使語(yǔ)句變得不可讀。

使用 in 運(yùn)算符

這也將返回一個(gè)布爾值:

  1. if ('name' in site.webkaka) { 
  2.     console.log("鍵存在");
  3. } 

demodownload

此解決方案的問(wèn)題再次在于它假定這 webkaka 是一個(gè)對(duì)象。如果不是,我們會(huì)得到一個(gè) TypeError

x

使用 hasOwnProperty 方法

就像 in 運(yùn)算符一樣,它假設(shè)存在 webkaka,并且只有在我們有一個(gè)單層對(duì)象時(shí)才能可靠地使用。 

  1. if (site.webkaka.hasOwnProperty('name')) { 
  2.     console.log("鍵存在");
  3. } 

demodownload

使用可選鏈接

與前面的示例不同,此方法為不存在的父母提供了解決方案。

  1. if (site?.webkaka?.name) { 
  2.     console.log("鍵存在");
  3. } 

demodownload

即使 webkaka 不是對(duì)象,也不會(huì)拋出錯(cuò)誤。但是,這有一個(gè)缺點(diǎn),只有部分瀏覽器支持它,所以不應(yīng)該在生產(chǎn)環(huán)境中使用它。 

in 和 hasOwnProperty 有什么區(qū)別?

了解inhasOwnProperty之間的區(qū)別很重要,如果需要檢查繼承的屬性,則需要使用 in 運(yùn)算符,或者也可以一起使用 hasOwnProperty  。為了強(qiáng)調(diào)兩者之間的區(qū)別,請(qǐng)看以下代碼示例:

  1. //構(gòu)造函數(shù)是一個(gè)繼承屬性
  2. //因此,這將返回 true
  3. console.log('constructor' in window);
  4.  
  5.  
  6. // 然而這將返回 false
  7. console.log(window.hasOwnProperty(constructor));

demodownload

輸出

true
false

總結(jié)

本文通過(guò)5個(gè)示例,介紹了5種方法檢查JS對(duì)象中是否存在某個(gè)屬性(鍵)。每個(gè)方法都有其奇妙之處,沒(méi)有好壞之分,在使用時(shí)應(yīng)盡量防止捕獲TypeError異常。

相關(guān)文章

標(biāo)簽: 對(duì)象    屬性  
x
廣告: 【限時(shí)】云主機(jī) 24元/月
/* 左側(cè)顯示文章內(nèi)容目錄 */