Terdapat sejumlah 5 nilai primitif dalam js, 6 yang boleh dinilai mengikut jenis, dan 9 pembina terbina dalam asli.
569 ini membentuk asas bahasa js.
5 nilai primitif ialah: nombor, aksara, Boolean, null, undefined
Typeof boleh menilai: nombor, aksara, Boolean, objek, fungsi, tidak ditentukan. Ambil perhatian bahawa null dan array, jenis kedua-dua objek output.
jenis tidak boleh membezakan antara tatasusunan dan objek Bagaimana untuk menentukan jenis? Gunakan Object.prototype.toString.apply().
if(value&&typeof value ==='objek'&&value.constructor === Array)
Pengesanan di atas akan memberikan palsu jika tatasusunan dibuat dalam bingkai dan tetingkap yang berbeza, dan objek tetingkap berbeza.
Kaedah yang boleh dipercayai ialah if(Object.prototype.toString.apply(value)==="[object Array]")
Tatasusunan argumen bukan tatasusunan, ia hanyalah objek dengan sifat ahli panjang.
Seperti yang ditunjukkan dalam contoh berikut, argumen bukan tatasusunan biasa
}
a();//Output [Argumen objek]
}
a();//Output [Array objek]
Bagaimanakah instanceof menentukan sama ada ia adalah tika?
Atribut dalam prototaip termasuk pembina.
Atribut prototaip lalai ialah objek objek dan boleh ditetapkan kepada sebarang nilai kompleks, mengabaikan nilai asal.
Walaupun ia adalah objek, ia adalah istimewa, dan rantaian bulat memautkan setiap kejadian kepada atribut prototaip pembinanya. Terdapat pautan tersembunyi antara contoh dan harta prototaip pembina, iaitu __proto__ contoh. Pada masa yang sama, atribut pembina bagi contoh diperoleh melalui pembina prototaip pembina.
Tetapi simpan pembina, supaya contoh baharu mempunyai atribut pembina, dan anda juga boleh menggunakan instanceof untuk menilai.
Foo.prototype={constructor:Foo}
var FooInstance = Foo baharu;
FooInstance.__proto__=== Foo.prototype;//true
FooInstance.constructor === Foo; //true
Sebenarnya, instanceof judgment bukan berdasarkan pembina, tetapi pada rantai prototaip, seperti yang ditunjukkan dalam contoh berikut
Gunakan nilai primitif, tiada pembina
Nilai yang manakah dianggap palsu: false, "", null, 0, -0, NaN, undefined, ini dianggap palsu, yang lain adalah benar
Tetapi sila beri perhatian kepada contoh berikut