Rumah  >  Artikel  >  hujung hadapan web  >  Mengapakah `instanceof` Berkelakuan Tidak Dijangka dengan Literal dalam JavaScript?

Mengapakah `instanceof` Berkelakuan Tidak Dijangka dengan Literal dalam JavaScript?

Linda Hamilton
Linda Hamiltonasal
2024-11-02 09:36:03955semak imbas

Why Does `instanceof` Behave Unexpectedly with Literals in JavaScript?

Type Analysis Conundrum: Mengapa instanceof Berkelakuan Tidak Dijangka untuk Literal

Memulakan Penyiasatan

Instance of Javascriptof operator, ostensibly digunakan mengesahkan keahlian objek dalam kelas, mempamerkan gelagat pelik untuk literal tertentu, membuatkan pembangun bingung. Mari kita teliti beberapa contoh yang membingungkan:

"foo" instanceof String //=> false<br>"foo" instanceof Object //=> false</p>
<p>contoh sebenar Boolean //=> false<br>contoh sebenar bagi Objek //=> false<br>instance palsu bagi Boolean //=> false<br>contoh palsu bagi Objek //=> palsu</p>
<p>12.21 contoh Nombor //=> false<br>/foo/ instanceof RegExp //=> true

Menyingkap Misteri

Punca gelagat misteri ini terletak pada perbezaan asas antara primitif dan objek dalam JavaScript. Primitif mewakili jenis data asas seperti rentetan, nombor, boolean dan nol. Objek, sebaliknya, ialah entiti instantiated yang mewarisi sifat dan kaedah daripada pembina atau kelas.

Apabila menggunakan instanceof dengan literal, pertimbangan utama ialah primitif sememangnya tidak tergolong dalam mana-mana kelas. Sebaliknya, mereka adalah entiti yang berbeza dengan set atribut mereka sendiri. Sebagai contoh, "foo" hanyalah rentetan literal, bukan contoh kelas String. Oleh itu, ungkapan "foo" instanceof String mengembalikan palsu.

Konsekuensi dan Penyelesaian

Keanehan ini mempunyai implikasi untuk semakan jenis. Untuk menentukan jenis primitif, pembangun sering menggunakan operator jenis dan bukannya instanceof. Sebagai contoh, jenis "foo" menghasilkan "rentetan", mengesahkan jenis literal.

Kesimpulan

Tingkah laku instanceof untuk literal yang kelihatan berubah-ubah berpunca daripada perbezaan yang wujud antara primitif dan objek dalam JavaScript. Walaupun ini mungkin kelihatan berlawanan dengan intuisi pada mulanya, ia menjadi lebih terurus apabila kita mengenali perbezaan asas ini. Dengan menerima pemahaman bernuansa ini, pembangun boleh menavigasi selok-belok penyemakan jenis JavaScript dengan lebih yakin.

Atas ialah kandungan terperinci Mengapakah `instanceof` Berkelakuan Tidak Dijangka dengan Literal 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