You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Web storage objects`localStorage`and`sessionStorage`allow to save key/value pairs in the browser.
3
+
Objek penyimpanan web`localStorage`dan`sessionStorage`memungkinkan untuk menyimpan pasangan *key*/*value* di peramban.
4
4
5
-
What's interesting about them is that the data survives a page refresh (for`sessionStorage`) and even a full browser restart (for`localStorage`). We'll see that very soon.
5
+
Yang menarik dari mereka adalah bahwa data bertahan dari refresh halaman (untuk`sessionStorage`) dan bahkan ketika peramban dimulai ulang secara penuh (untuk`localStorage`). Kita akan melihatnya segera.
6
6
7
-
We already have cookies. Why additional objects?
7
+
Kita sudah memiliki cookies. Mengapa perlu tambahan objek?
8
8
9
-
-Unlike cookies, web storage objects are not sent to server with each request. Because of that, we can store much more. Most browsers allow at least 2 megabytes of data (or more) and have settings to configure that.
10
-
-Also unlike cookies, the server can't manipulate storage objects via HTTP headers. Everything's done in JavaScript.
11
-
-The storage is bound to the origin (domain/protocol/port triplet). That is, different protocols or subdomains infer different storage objects, they can't access data from each other.
9
+
-Tidak seperti cookies, objek penyimpanan web tidak dikirim ke server pada setiap permintaan. Karena itu, kita bisa menyimpan lebih banyak. Sebagian besar peramban mengizinkan setidaknya 2 *megabyte*data (atau lebih) dan memiliki pengaturan untuk konfigurasinya.
10
+
-Juga tidak seperti cookies, server tidak dapat memanipulasi objek penyimpanan melalui HTTP header. Semuanya dilakukan dalam JavaScript.
11
+
-Penyimpanan terikat kepada asalnya (domain/protokol/port triplet). Artinya, protokol atau subdomain yang berbeda menyimpulkan objek penyimpanan yang berbeda, mereka tidak dapat mengakses data satu sama lain.
12
12
13
-
Both storage objects provide same methods and properties:
13
+
Kedua objek penyimpanan menyediakan *method* dan properti yang sama:
14
14
15
-
-`setItem(key, value)` -- store key/value pair.
16
-
-`getItem(key)` -- get the value by key.
17
-
-`removeItem(key)` -- remove the key with its value.
-`key(index)` -- mendapatkan *key* pada posisi tertentu.
20
+
-`length` -- jumlah item yang disimpan.
21
21
22
-
As you can see, it's like a`Map`collection (`setItem/getItem/removeItem`), but also allows access by index with`key(index)`.
22
+
Seperti yang Anda lihat, ini seperti koleksi`Map` (`setItem/getItem/removeItem`), tetapi juga memungkinkan akses berdasarkan indeks dengan`key(index)`.
23
23
24
-
Let's see how it works.
24
+
Mari kita lihat cara kerjanya.
25
25
26
-
## localStorage demo
26
+
## Demo localStorage
27
27
28
-
The main features of `localStorage`are:
28
+
Fitur utama `localStorage`adalah:
29
29
30
-
-Shared between all tabs and windows from the same origin.
31
-
-The data does not expire. It remains after the browser restart and even OS reboot.
30
+
-Dibagikan antara semua *tab* dan *window* dari *origin* yang sama.
31
+
-Data tidak kedaluwarsa. Data tetap tersimpan setelah peramban *restart* dan bahkan setelah OS *reboot*.
32
32
33
-
For instance, if you run this code...
33
+
Misalnya, jika Anda menjalankan kode ini...
34
34
35
35
```js run
36
36
localStorage.setItem('test', 1);
37
37
```
38
38
39
-
...And close/open the browser or just open the same page in a different window, then you can get it like this:
39
+
...Dan kemudian menutup/membuka peramban atau hanya membuka halaman yang sama di jendela yang berbeda, maka Anda bisa mendapatkannya seperti ini:
40
40
41
41
```js run
42
42
alert( localStorage.getItem('test') ); // 1
43
43
```
44
44
45
-
We only have to be on the same origin (domain/port/protocol), the url path can be different.
45
+
Kita hanya harus berada di *origin* yang sama (domain/port/protocol), *path* urlnya bisa berbeda.
46
46
47
-
The `localStorage`is shared between all windows with the same origin, so if we set the data in one window, the change becomes visible in another one.
47
+
`localStorage`dibagi antara semua *window* dengan *origin* yang sama, jadi jika kita mengatur data di satu *window*, perubahan akan terlihat di *window* lain.
48
48
49
-
## Object-like access
49
+
## Akses seperti objek
50
50
51
-
We can also use a plain object way of getting/setting keys, like this:
51
+
Kita juga dapat menggunakan cara sebuah objek biasa untuk mendapatkan/mengatur *key*, seperti ini:
52
52
53
53
```js run
54
-
//set key
54
+
//mengatur key
55
55
localStorage.test=2;
56
56
57
-
//get key
57
+
//mendapatkan key
58
58
alert( localStorage.test ); // 2
59
59
60
-
//remove key
60
+
//menghapus key
61
61
deletelocalStorage.test;
62
62
```
63
63
64
-
That's allowed for historical reasons, and mostly works, but generally not recommended, because:
64
+
Itu diizinkan karena alasan historis, dan sebagian besar berfungsi, tetapi umumnya tidak disarankan, karena:
65
65
66
-
1.If the key is user-generated, it can be anything, like`length`or`toString`, or another built-in method of`localStorage`. In that case`getItem/setItem`work fine, while object-like access fails:
66
+
1.Jika *key* dibuat oleh pengguna, itu bisa apa saja, seperti`length`atau`toString`, atau *method* bawaan`localStorage` lainnya. Dalam hal itu`getItem/setItem`berfungsi dengan baik, sementara akses seperti objek akan gagal:
2. Ada *event*`storage`, yang dipicu saat kita mengubah data. *Event* itu tidak terjadi untuk akses seperti objek. Kita akan melihatnya nanti di bab ini.
71
72
72
-
2. There's a `storage` event, it triggers when we modify the data. That event does not happen for object-like access. We'll see that later inthis chapter.
73
+
## Pengulangan pada keys
73
74
74
-
## Looping over keys
75
+
Seperti yang telah kita lihat, *method* menyediakan fungsionalitas "mendapatkan/mengatur/menghapus dengan *key*". Tetapi bagaimana cara mendapatkan semua *value* atau *key* yang disimpan?
75
76
76
-
As we've seen, the methods provide "get/set/remove by key" functionality. But how to get all saved values or keys?
77
+
Sayangnya, objek penyimpanan tidak bisa dilakukan iterasi.
77
78
78
-
Unfortunately, storage objects are not iterable.
79
-
80
-
One way is to loop over them as over an array:
79
+
Salah satu caranya adalah dengan mengulangnya sebagai senarai (array):
Also it is possible to stringify the whole storage object, e.g. for debugging purposes:
141
+
Juga dimungkinkan untuk *stringify* seluruh objek penyimpanan, sebagai contoh untuk tujuan *debugging*:
145
142
146
143
```js run
147
-
// added formatting options to JSON.stringify to make the object look nicer
144
+
// menambahkan opsi pemformatan pada JSON.stringify untuk membuat objek terlihat lebih bagus
148
145
alert( JSON.stringify(localStorage, null, 2) );
149
146
```
150
147
151
148
152
149
## sessionStorage
153
150
154
-
The`sessionStorage`object is used much less often than`localStorage`.
151
+
Objek`sessionStorage`lebih jarang digunakan daripada`localStorage`.
155
152
156
-
Properties and methods are the same, but it's much more limited:
153
+
Properti dan *method*-nya sama, tetapi jauh lebih terbatas:
157
154
158
-
- The `sessionStorage` exists only within the current browser tab.
159
-
- Another tab with the same page will have a different storage.
160
-
- But it is shared between iframes in the same tab (assuming they come from the same origin).
161
-
- The data survives page refresh, but not closing/opening the tab.
155
+
-`sessionStorage`hanya ada di dalam tab peramban saat ini.
156
+
-Tab lain dengan halaman yang sama akan memiliki penyimpanan yang berbeda.
157
+
-Tapi dibagi antar iframe di tab yang sama (dengan asumsi mereka berasal dari *origin* yang sama).
158
+
-Data bertahan dari *refresh* halaman, tetapi tidak dengan menutup/membuka tab.
162
159
163
-
Let's see that in action.
160
+
Mari kita lihat langsung prakteknya.
164
161
165
-
Run this code...
162
+
Jalankan kode ini...
166
163
167
164
```js run
168
165
sessionStorage.setItem('test', 1);
169
166
```
170
167
171
-
...Then refresh the page. Now you can still get the data:
168
+
...Kemudian *refresh*halaman. Sekarang Anda masih bisa mendapatkan data:
172
169
173
170
```js run
174
-
alert( sessionStorage.getItem('test') ); // after refresh: 1
171
+
alert( sessionStorage.getItem('test') ); // setelah refresh: 1
175
172
```
176
173
177
-
...But if you open the same page in another tab, and try again there, the code above returns`null`, meaning "nothing found".
174
+
...Tetapi jika Anda membuka halaman yang sama di tab lain, dan mencoba lagi di sana, kode di atas mengembalikan`null`, yang berarti "tidak ada yang ditemukan".
178
175
179
-
That's exactly because `sessionStorage` is bound not only to the origin, but also to the browser tab. For that reason, `sessionStorage` is used sparingly.
176
+
Itu persis terjadi karena `sessionStorage`terikat tidak hanya pada *origin*, tetapi juga pada tabperamban. Oleh karena itu, `sessionStorage`jarang digunakan
180
177
181
-
## Storage event
178
+
## Event storage
182
179
183
-
When the data gets updated in `localStorage` or `sessionStorage`, [storage](https://www.w3.org/TR/webstorage/#the-storage-event) event triggers, with properties:
180
+
Saat data diperbarui di `localStorage`atau`sessionStorage`, *event*[storage](https://www.w3.org/TR/webstorage/#the-storage-event) terpicu, dengan properti:
184
181
185
-
- `key` – the key that was changed (`null` if `.clear()` is called).
186
-
- `oldValue` – the old value(`null` if the key is newly added).
187
-
- `newValue` – the new value(`null` if the key is removed).
188
-
- `url` – the url of the document where the update happened.
189
-
- `storageArea` – either `localStorage` or `sessionStorage` object where the update happened.
182
+
-`key` – *key* yang diubah(`null`jika`.clear()`dipanggil).
183
+
-`oldValue` – *value*lama(`null`jika *key* baru ditambahkan).
Please note that the event also contains:`event.url`--the url of the document where the data was updated.
210
+
Harap perhatikan bahwa *event* juga berisi:`event.url`-- url dokumen tempat data diperbarui.
214
211
215
-
Also, `event.storageArea`contains the storage object --the event is the same for both `sessionStorage`and`localStorage`, so`event.storageArea`references the one that was modified. We may even want to set something back in it, to "respond" to a change.
212
+
Selain itu, `event.storageArea`berisi objek penyimpanan --*event*-nya sama untuk `sessionStorage`dan`localStorage`, jadi`event.storageArea`merujuk ke yang telah dimodifikasi. Kita bahkan mungkin ingin mengatur sesuatu kembali di dalamnya, untuk "merespons" perubahan.
216
213
217
-
**That allows different windows from the same origin to exchange messages.**
214
+
**Itu memungkinkan window yang berbeda dari origin yang sama untuk bertukar pesan.**
218
215
219
-
Modern browsers also support [Broadcast channel API](mdn:/api/Broadcast_Channel_API), the special APIfor same-origin inter-window communication, it's more full featured, but less supported. There are libraries that polyfill that API, based on `localStorage`, that make it available everywhere.
216
+
Peramban modern juga mendukung [Broadcast channel API](mdn:/api/Broadcast_Channel_API), API khusus untuk komunikasi antar-jendela dengan origin yang sama, fiturnya lebih lengkap, tetapi kurang didukung. Ada*libraries* yang melakukan polifillAPI tersebut, berdasarkan `localStorage`, yang membuatnya tersedia di mana saja.
220
217
221
-
## Summary
218
+
## Ringkasan
222
219
223
-
Web storage objects `localStorage` and `sessionStorage` allow to store key/value in the browser.
224
-
- Both `key` and `value` must be strings.
225
-
- The limit is 5mb+, depends on the browser.
226
-
- They do not expire.
227
-
- The data is bound to the origin (domain/port/protocol).
220
+
Objek penyimpanan web`localStorage`dan`sessionStorage`memungkinkan untuk menyimpan *key*/*value* di peramban.
221
+
- Baik `key` dan `value` harus berupa string.
222
+
- Batasnya adalah 5mb+, tergantung pada peramban.
223
+
- Mereka tidak kedaluwarsa.
224
+
- Data terikat pada *origin* (domain/port/protokol).
228
225
229
226
| `localStorage` | `sessionStorage` |
230
227
|----------------|------------------|
231
-
| Shared between all tabs and windows with the same origin | Visible within a browser tab, including iframes from the same origin |
-Gunakan`Object.keys`untuk mendapatkan semua *key*.
240
+
-Kita mengakses *key* sebagai properti objek, dalam hal ini *event*`storage`tidak dipicu.
244
241
245
-
Storageevent:
242
+
*Event storage*:
246
243
247
-
-Triggers on `setItem`, `removeItem`, `clear` calls.
248
-
-Contains all the data about the operation(`key/oldValue/newValue`), the document`url`and the storage object`storageArea`.
249
-
-Triggers on all`window`objects that have access to the storage except the one that generated it (within a tab for`sessionStorage`, globally for`localStorage`).
244
+
-Pemicu pada panggilan `setItem`, `removeItem`, `clear`.
245
+
-Berisi semua data tentang operasi(`key/oldValue/newValue`), dokumen `url`dan objek penyimpanan`storageArea`.
246
+
-Memicu semua objek`window`yang memiliki akses ke penyimpanan kecuali yang membuatnya (dalam tab untuk`sessionStorage`, secara global untuk`localStorage`).
0 commit comments