Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk menentukan sama ada objek wujud dalam javascript

Bagaimana untuk menentukan sama ada objek wujud dalam javascript

青灯夜游
青灯夜游asal
2021-09-08 18:19:362751semak imbas

Kaedah penghakiman: 1. Gunakan pernyataan "if(!Obj)"; 2. Gunakan "if(!window.Obj)"; 3. Gunakan "if(!this.Obj)"; Gunakan "if(typeof Obj=="undefined""; 5. Gunakan "if(Obj==undefined)" dan seterusnya.

Bagaimana untuk menentukan sama ada objek wujud dalam javascript

Persekitaran pengendalian tutorial ini: sistem Windows 7, versi JavaScript 1.8.5, komputer Dell G3.

Kaedah Javascript untuk menentukan sama ada objek wujud

Sekarang, kita perlu menentukan sama ada objek global myObj wujud Jika ia tidak wujud , kemudian ia Buat kenyataan. Algoritma yang diterangkan dalam bahasa semula jadi adalah seperti berikut:

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

Berikut ialah 10 kaedah pelaksanaan:

Kaedah 1:

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

Kaedah 2:

Selain arahan var, terdapat satu lagi penulisan semula yang juga boleh mendapatkan hasil yang betul:

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

tetingkap It ialah objek peringkat atas JavaScript, dan semua pembolehubah global adalah sifatnya. Oleh itu, menentukan sama ada myobj kosong adalah sama dengan menentukan sama ada objek tetingkap mempunyai atribut myobj, supaya ralat ReferenceError yang berlaku kerana myObj tidak ditakrifkan dapat dielakkan. Walau bagaimanapun, daripada penyeragaman kod, sebaiknya tambahkan var pada baris kedua:

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

atau tulis seperti ini:

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

Kaedah 3:

Kelemahan kaedah penulisan di atas ialah dalam sesetengah persekitaran berjalan (seperti V8, Rhino), tetingkap mungkin bukan objek peringkat atas. Oleh itu, pertimbangkan untuk menulis semula sebagai:

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

Pada peringkat pembolehubah global, kata kunci ini sentiasa menunjuk kepada pembolehubah peringkat atas, jadi ia boleh bebas daripada persekitaran operasi yang berbeza.

Kaedah 4:

Walau bagaimanapun, cara penulisan di atas kurang boleh dibaca, dan penunjuk ini berubah-ubah dan terdedah kepada ralat, jadi ia ditulis semula selanjutnya:

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

Adalah lebih jelas untuk menggunakan pembolehubah tersuai global untuk mewakili objek peringkat teratas.

Kaedah 5:

Anda juga boleh menggunakan operator jenis untuk menentukan sama ada myObj ditakrifkan.

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

Ini ialah kaedah yang paling banyak digunakan pada masa ini untuk menentukan sama ada objek JavaScript wujud.

Kaedah 6:

Memandangkan nilai myObj secara langsung sama dengan tidak ditentukan apabila ia ditakrifkan tetapi tidak diberikan, kaedah penulisan di atas boleh dipermudahkan:

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

Terdapat dua perkara yang perlu diperhatikan di sini Pertama, kata kunci var dalam baris kedua tidak boleh hilang, jika tidak, ReferenceError akan berlaku Kedua, undefined tidak boleh ditambah dengan petikan tunggal atau petikan berganda undefined dibandingkan di sini, dan bukannya rentetan "undefined".

Kaedah 7:

Kaedah penulisan di atas masih berlaku dalam kes "perbandingan tepat" (===):

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

Kaedah 8:

Mengikut reka bentuk bahasa javascript, undefined == null, jadi membandingkan sama ada myObj sama dengan null juga boleh mendapatkan hasil yang betul:

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

Namun, Walaupun keputusan larian adalah betul, dari sudut semantik, kaedah penghakiman ini adalah salah dan harus dielakkan. Kerana null merujuk kepada objek kosong yang telah diberikan nilai null, iaitu, objek ini sebenarnya mempunyai nilai, manakala undefined merujuk kepada objek yang tidak wujud atau tidak mempunyai nilai yang ditetapkan. Oleh itu, hanya "operator perbandingan" (==) boleh digunakan di sini Jika "operator perbandingan tepat" (===) digunakan di sini, ralat akan berlaku.

Kaedah 9:

Anda juga boleh menggunakan operator in untuk menentukan sama ada myObj ialah atribut bagi objek peringkat atas:

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

Kaedah 10:

Akhir sekali, gunakan kaedah hasOwnProperty untuk menentukan sama ada myObj ialah sifat objek peringkat atas:

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

Ringkasan

1. Jika anda hanya menentukan sama ada objek itu wujud, adalah disyorkan untuk menggunakan kaedah penulisan kelima.

2. Jika selain sama ada objek itu wujud, anda juga perlu menentukan sama ada objek itu mempunyai nilai nol, adalah disyorkan untuk menggunakan cara penulisan yang pertama.

3 Melainkan terdapat keadaan khas, semua pembolehubah harus diisytiharkan menggunakan arahan var.

4. Untuk menjadi platform merentas, adalah disyorkan untuk mengelak daripada menggunakan tetingkap untuk mewakili objek peringkat teratas.

5. Dalam bahasa Javascript, null dan undefined mudah dikelirukan. Dalam kes di mana kedua-duanya mungkin terlibat, adalah disyorkan untuk menggunakan pengendali "perbandingan tepat" (===).

[Pembelajaran yang disyorkan: Tutorial JavaScript Lanjutan]

Atas ialah kandungan terperinci Bagaimana untuk menentukan sama ada objek wujud dalam javascript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn