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

Mengapakah `instanceof` Berkelakuan Berbeza dengan Literal dalam JavaScript?

Susan Sarandon
Susan Sarandonasal
2024-11-03 14:45:03309semak imbas

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

Ketidakkonsistenan instanceof dengan Literals

Instanceof JavaScript, walaupun tujuannya untuk menyemak sama ada objek ialah contoh kelas, mempamerkan beberapa tingkah laku yang tidak dijangka dengan literal. Artikel ini menyelami ketidakkonsistenan ini dan mendedahkan alasan di sebaliknya.

Huruf Primitif lwn Huruf Objek

Primitif, seperti rentetan, nombor dan boolean, wujud dalam kategori jenis yang berbeza berbanding dengan objek yang dibuat dalam JavaScript. Perbezaan ini digambarkan dalam contoh berikut:

<code class="js">var color1 = new String("green");
color1 instanceof String; // returns true
var color2 = "coral";
color2 instanceof String; // returns false (color2 is not a String object)</code>

Walaupun color1 ialah tika String yang dicipta daripada pembina, color2 ialah rentetan primitif literal.

False Returns dengan instanceof

Tanpa diduga, instanceof mengembalikan palsu untuk banyak literal:

<code class="js">"foo" instanceof String // false
true instanceof Boolean // false
12.21 instanceof Number // false</code>

Primitif ini tidak dianggap tika objek pembalut masing-masing.

Pengecualian dengan Tatasusunan dan Objek

Array dan objek literal adalah pengecualian kepada peraturan:

<code class="js">[0,1] instanceof Array // true
{0:1} instanceof Object // true</code>

Ia dianggap sebagai contoh bagi fungsi pembina yang sepadan.

Sebab Ketidakkonsistenan

Perbezaan contoh tingkah laku adalah disengajakan. JavaScript menganggap primitif sebagai nilai yang tidak boleh diubah dan bukannya objek. Oleh itu, mereka tidak mewarisi mana-mana kelas. Pengecualian untuk tatasusunan dan literal objek dibuat untuk memudahkan manipulasi objek dan mengekalkan konsistensi dengan fungsi pembina.

Kesimpulan

Tersurat dan objek primitif yang dicipta dalam JavaScript berbeza dalam tingkah laku dengan instanceof operator. Perbezaan ini boleh berlawanan dengan intuitif dan mudah, bergantung pada kes penggunaan tertentu. Dengan memahami gelagat bernuansa ini, pembangun boleh menggunakan instanceof dalam kod JavaScript mereka dengan berkesan.

Atas ialah kandungan terperinci Mengapakah `instanceof` Berkelakuan Berbeza 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