久久久精品一区ed2k-女人被男人叉到高潮的视频-中文字幕乱码一区久久麻豆樱花-俄罗斯熟妇真实视频

javascript如何判斷對(duì)象是不是存在

這篇文章給大家分享的是有關(guān)javascript如何判斷對(duì)象是不是存在的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

創(chuàng)新互聯(lián)建站主營江陽網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶APP軟件開發(fā),江陽h5重慶小程序開發(fā)搭建,江陽網(wǎng)站營銷推廣歡迎江陽等地區(qū)企業(yè)咨詢

判斷方法:1、用“if(!Obj)”語句;2、用“if(!window.Obj)”;3、用“if(!this.Obj)”;4、用“if(typeof Obj=="undefined")”;5、用“if(Obj==undefined)”等等。

本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。

javascript判斷對(duì)象是否存在的方法

現(xiàn)在,我們要判斷一個(gè)全局對(duì)象myObj是否存在,如果不存在,就對(duì)它進(jìn)行聲明。用自然語言描述的算法如下:

  if (myObj不存在){
    聲明myObj;
  }

下面給大家分享10種實(shí)現(xiàn)方法:

方法1:

  if (!myObj) {
    var myObj = { };
  }

方法2:

除了var命令,還可以有另一種改寫,也能得到正確的結(jié)果:

  if (!window.myObj) {
    myObj = { };
  }

window是javascript的頂層對(duì)象,所有的全局變量都是它的屬性。所以,判斷myobj是否為空,等同于判斷window對(duì)象是否有myobj屬性,這樣就可以避免因?yàn)閙yObj沒有定義而出現(xiàn)ReferenceError錯(cuò)誤。不過,從代碼的規(guī)范性考慮,最好還是對(duì)第二行加上var:

  if (!window.myObj) {
    var myObj = { };
  }

或者寫成這樣:

  if (!window.myObj) {
    window.myObj = { };
  }

方法3:

上面這種寫法的缺點(diǎn)在于,在某些運(yùn)行環(huán)境中(比如V8、Rhino),window未必是頂層對(duì)象。所以,考慮改寫成:

  if (!this.myObj) {
    this.myObj = { };
  }

在全局變量的層面中,this關(guān)鍵字總是指向頂層變量,所以就可以獨(dú)立于不同的運(yùn)行環(huán)境。

方法4:

但是,上面這樣寫可讀性較差,而且this的指向是可變的,容易出錯(cuò),所以進(jìn)一步改寫:

  var global = this;
  if (!global.myObj) {
    global.myObj = { };
  }

用自定義變量global表示頂層對(duì)象,就清楚多了。

方法5:

還可以使用typeof運(yùn)算符,判斷myObj是否有定義。

  if (typeof myObj == "undefined") {
    var myObj = { };
  }

這是目前使用最廣泛的判斷javascript對(duì)象是否存在的方法。

方法6:

由于在已定義、但未賦值的情況下,myObj的值直接等于undefined,所以上面的寫法可以簡(jiǎn)化:

  if (myObj == undefined) {
    var myObj = { };
  }

這里有兩個(gè)地方需要注意,首先第二行的var關(guān)鍵字不能少,否則會(huì)出現(xiàn)ReferenceError錯(cuò)誤,其次undefined不能加單引號(hào)或雙引號(hào),因?yàn)檫@里比較的是undefined這種數(shù)據(jù)類型,而不是"undefined"這個(gè)字符串。

方法7:

上面的寫法在"精確比較"(===)的情況下,依然成立:

  if (myObj === undefined) {
    var myObj = { };
  }

方法8:

根據(jù)javascript的語言設(shè)計(jì),undefined == null,所以比較myObj是否等于null,也能得到正確結(jié)果:

  if (myObj == null) {
    var myObj = { };
  }

不過,雖然運(yùn)行結(jié)果正確,但是從語義上看,這種判斷方法是錯(cuò)的,應(yīng)該避免。因?yàn)閚ull指的是已經(jīng)賦值為null的空對(duì)象,即這個(gè)對(duì)象實(shí)際上是有值的,而undefined指的是不存在或沒有賦值的對(duì)象。因此,這里只能使用"比較運(yùn)算符"(==),如果這里使用"精確比較運(yùn)算符"(===),就會(huì)出錯(cuò)。

方法9:

還可以使用in運(yùn)算符,判斷myObj是否為頂層對(duì)象的一個(gè)屬性:

  if (!('myObj' in window)) {
    window.myObj = { };
  }

方法10:

最后,使用hasOwnProperty方法,判斷myObj是否為頂層對(duì)象的一個(gè)屬性:

  if (!this.hasOwnProperty('myObj')) {
    this.myObj = { };
  }

感謝各位的閱讀!關(guān)于“javascript如何判斷對(duì)象是不是存在”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

本文名稱:javascript如何判斷對(duì)象是不是存在
分享鏈接:http://sd-ha.com/article46/gpsdeg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)、做網(wǎng)站、靜態(tài)網(wǎng)站、企業(yè)網(wǎng)站制作、App開發(fā)、服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)