Bagaimana untuk menentukan sama ada objek wujud dalam javascript

青灯夜游
Lepaskan: 2023-01-07 11:47:41
asal
2722 orang telah melayarinya

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;
  }
Salin selepas log masuk

Berikut ialah 10 kaedah pelaksanaan:

Kaedah 1:

  if (!myObj) {
    var myObj = { };
  }
Salin selepas log masuk

Kaedah 2:

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

  if (!window.myObj) {
    myObj = { };
  }
Salin selepas log masuk

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 = { };
  }
Salin selepas log masuk

atau tulis seperti ini:

  if (!window.myObj) {
    window.myObj = { };
  }
Salin selepas log masuk

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 = { };
  }
Salin selepas log masuk

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 = { };
  }
Salin selepas log masuk

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 = { };
  }
Salin selepas log masuk

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 = { };
  }
Salin selepas log masuk

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 = { };
  }
Salin selepas log masuk

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 = { };
  }
Salin selepas log masuk

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 = { };
  }
Salin selepas log masuk

Kaedah 10:

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

  if (!this.hasOwnProperty('myObj')) {
    this.myObj = { };
  }
Salin selepas log masuk

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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!