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
Copy file name to clipboardExpand all lines: 1-js/06-advanced-functions/10-bind/article.md
+26-29Lines changed: 26 additions & 29 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -203,7 +203,7 @@ for (let key in user) {
203
203
```
204
204
205
205
Librari Javascript juga menyediakan fungsi untuk memudahkan pengikatan/binding masal, contoh [_.bindAll(object, methodNames)](http://lodash.com/docs#bindAll) didalam lodash.
The call to `mul.bind(null, 2)` creates a new function `double` that passes calls to `mul`, fixing `null` as the context and `2` as the first argument. Further arguments are passed "as is".
248
-
Pemanggilan terhadap `mul.bind(null, 2)` membuat sebuah fungsi baru `double` yang mengirimkan pemanggilan terhadap `mul, memperbaiki `null` sebagai konteks dan `2` sebagai argumen pertamanya. Ar
246
+
Panggilan pada `mul.bind(null, 2)` membuat function `double` baru yang memberikan panggilan terhadap `mul`, memperbaiki `null` sebagai konteksnya dan `2` sebagai argumen pertamanya. Argumen-argumen lebih lanjut yang diberikan "as is/sebagaimana adanya".
249
247
250
-
That's called [partial function application](https://en.wikipedia.org/wiki/Partial_application) -- we create a new function by fixing some parameters of the existing one.
248
+
Itu dipanggil[partial function application](https://en.wikipedia.org/wiki/Partial_application) -- kita membuat sebuah fungsi baru dengan memperbaiki beberapa parameter dari yang sudah ada.
251
249
252
-
Please note that here we actually don't use `this` here. But `bind` requires it, so we must put in something like `null`.
250
+
Harap dicatat bahwa disini kita tidak menggunakan `this`. Tapi`bind`memerlukannya, jadi kita harus meletakkan di dalam sesuatu seperti`null`.
253
251
254
-
The function `triple` in the code below triples the value:
252
+
Fungsi `triple`di dalam kode dibawah ini melipatkan tiga kali lipat nilai tersebut:
The benefit is that we can create an independent function with a readable name (`double`, `triple`). We can use it and not provide the first argument every time as it's fixed with `bind`.
270
+
Manfaatnya bahwa kita dapat membuat sebuah fungsi independen dengan nama yang dapat dibaca (`double`, `triple`). Kita bisa menggunakannya dan tidak menyediakan argumen pertamanya setiap saat karena sudah diperbaiki dengan`bind`.
273
271
274
-
In other cases, partial application is useful when we have a very generic function and want a less universal variant of it for convenience.
272
+
Dalam kasus lain, aplikasi parsial berguna saat kita punya sebuah fungsi generik dan menginginkan varian yang kurang universal untuk kenyamanan.
275
273
276
-
For instance, we have a function `send(from, to, text)`. Then, inside a `user` object we may want to use a partial variant of it: `sendTo(to, text)` that sends from the current user.
274
+
Contoh, kita punya sebuah fungsi`send(from, to, text)`. Kemudian, di dalam objek `user`kita mungkin ingin menggunakan varian parsial darinya: `sendTo(to, text)`yang dikirim dari user saat ini.
277
275
278
-
## Going partial without context
276
+
## Menjadi parsial tanpa konteks
279
277
280
-
What if we'd like to fix some arguments, but not the context `this`? For example, for an object method.
278
+
Bagaimana jika kita ingin memperbaiki beberapa argumen, tetapi bukan konteks `this`? Contoh, untuk sebuah method objek.
281
279
282
-
The native `bind` does not allow that. We can't just omit the context and jump to arguments.
280
+
`bind`yang asli tidak mengizinkan itu. Kita tidak bisa begitu saja mengabaikan konteks dan lompat ke argumen.
283
281
284
-
Fortunately, a function `partial` for binding only arguments can be easily implemented.
282
+
Untungnya, fungsi `partial`untuk mengikat argumen saja dapat dengan mudah diterapkan.
Hasil dari panggilan `partial(func[, arg1, arg2...])` yaitu sebuah pembungkus `(*)` yang memanggil `func` dengan:
311
+
-`this` sama seperti yang didapat (`user.sayNow` menyebutnya `user`)
312
+
- Lalu berikan `...argsBound` -- argumen dari panggilan `partial` yaitu (`"10:00"`)
313
+
- Lalu berikan `...args` -- argumen yang diberikan ke pembungkus (`" Hello "`)
312
314
313
-
The result of `partial(func[, arg1, arg2...])` call is a wrapper `(*)` that calls `func` with:
314
-
- Same `this` as it gets (for `user.sayNow` call it's `user`)
315
-
- Then gives it `...argsBound` -- arguments from the `partial` call (`"10:00"`)
316
-
- Then gives it `...args` -- arguments given to the wrapper (`"Hello"`)
317
-
318
-
So easy to do it with the spread syntax, right?
315
+
Sangat mudah melakukannya dengan sintaks penyebaran, bukan?
319
316
320
-
Also there's a ready [_.partial](https://lodash.com/docs#partial) implementation from lodash library.
317
+
Juga ada implementasi [_.partial](https://lodash.com/docs#pihak) yang siap dari perpustakaan lodash.
321
318
322
-
## Summary
319
+
## Kesimpulan
323
320
324
-
Method `func.bind(context, ...args)` returns a "bound variant" of function `func` that fixes the context `this` and first arguments if given.
321
+
Method `func.bind(context, ...args)`mengembalikan sebuah "varian terikat" dari function `func`yang memperbaiki konteks`this`dan argumen pertama jika diberikan.
325
322
326
-
Usually we apply `bind` to fix `this` for an object method, so that we can pass it somewhere. For example, to `setTimeout`.
323
+
Biasanya kita menerapkan`bind`untuk memperbaiki`this`untuk sebuah method objek, sehingga kita bisa memberikannya ke suatu tempat. Misalnya, ke`setTimeout`.
327
324
328
-
When we fix some arguments of an existing function, the resulting (less universal) function is called *partially applied* or *partial*.
325
+
Ketika kita memperbaiki beberapa argumen dari function yang ada, fungsi yang dihasilkan (less universal) disebut *partially applied*atau*partial*.
329
326
330
-
Partials are convenient when we don't want to repeat the same argument over and over again. Like if we have a `send(from, to)` function, and `from` should always be the same for our task, we can get a partial and go on with it.
327
+
Parsial lebih mudah digunakan ketika kita tidak ingin mengulangi argumen yang sama berulang kali. Seperti jika kita memiliki fungsi`send(from, to)`, dan`from`harus selalu sama untuk tugas kita, kita bisa mendapatkan sebuah partial dan melanjutkannya.
0 commit comments