Semua variabel dalam JavaScript adalah objek, dengan dua pengecualian nol dan tidak terdefinisi.
Salinan kode adalah sebagai berikut:
false.tostring ();
[1, 2, 3] .tostring ();
function foo () {}
Foo.bar = 1;
Foo.bar; // 1
Kesalahpahaman umum adalah bahwa nilai literal angka bukan objek. Ini karena bug di parser JavaScript yang mencoba mengurai operator titik sebagai bagian dari nilai nomen numerik titik mengambang.
Salinan kode adalah sebagai berikut:
2.toString (); // Kesalahan: Sintakserror
Ada banyak solusi untuk membuat nilai literal angka terlihat seperti objek.
Salinan kode adalah sebagai berikut:
2..tostring ();
2.tostring ();
(2) .toString ();
Objek sebagai tipe data
Objek JavaScript dapat digunakan sebagai tabel hash dan terutama digunakan untuk menyimpan korespondensi antara kunci dan nilai yang disebutkan.
Menggunakan sintaks literal suatu objek - {} - dapat membuat objek sederhana. Objek yang baru dibuat ini mewarisi dari objek.Prototype di bawah ini, tanpa properti khusus.
Salinan kode adalah sebagai berikut:
var foo = {}; // objek kosong
// Objek baru dengan 'tes' properti khusus dengan nilai 12
var bar = {test: 12};
Akses Properties
Ada dua cara untuk mengakses properti objek, operator titik atau operator braket.
Salinan kode adalah sebagai berikut:
var foo = {name: 'kitten'}
foo.name; // Kitten
foo ['name'];
var get = 'name';
foo [get]; // anak kucing
foo.1234; // Sintakserror
foo ['1234'];
Dua sintaksis setara, tetapi operator braket masih valid dalam dua situasi berikut - Properti Pengaturan Dinamis - Nama atribut bukan nama variabel yang valid (Catatan Penerjemah: misalnya, nama atribut berisi spasi, atau nama atribut adalah Kata kunci JS)
Catatan Penerjemah: Dalam alat deteksi sintaks JSLint, operator titik direkomendasikan.
Hapus atribut
Satu -satunya cara untuk menghapus properti adalah dengan menggunakan operator hapus;
Salinan kode adalah sebagai berikut:
14
var obj = {
Bar: 1,
foo: 2,
Baz: 3
};
obj.bar = tidak terdefinisi;
obj.foo = null;
Hapus obj.baz;
untuk (var i di obj) {
if (obj.hasownproperty (i)) {
console.log (i, '' + obj [i]);
}
}
Hasil output di atas memiliki bilah yang tidak terdefinisi dan foo null - hanya Baz yang benar -benar dihapus, sehingga menghilang dari hasil output.
Sintaks nama atribut
Salinan kode adalah sebagai berikut:
var test = {
'case': 'Saya adalah kata kunci jadi saya harus dinotasikan sebagai string',
Hapus: 'Saya juga kata kunci jadi saya' // Kesalahan: Sintakserror
};
Nama atribut suatu objek dapat dinyatakan menggunakan string atau karakter normal. Namun, karena kesalahan desain lain dari parser JavaScript, metode deklarasi kedua di atas akan melempar kesalahan sintakser sebelum ecmascript 5.
Alasan untuk kesalahan ini adalah bahwa Delete adalah kata kunci dalam bahasa JavaScript;