Rumah > Artikel > hujung hadapan web > Mengapakah `instanceof` Berkelakuan Berbeza dengan Literal dalam 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!