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!