Skip to content

Commit dd455c4

Browse files
authored
Merge pull request #169 from Iiqbal2000/master
Update article.md
2 parents 2b277d9 + bb4abd7 commit dd455c4

File tree

2 files changed

+118
-122
lines changed

2 files changed

+118
-122
lines changed

1-js/06-advanced-functions/10-bind/article.md

Lines changed: 26 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ for (let key in user) {
203203
```
204204

205205
Librari Javascript juga menyediakan fungsi untuk memudahkan pengikatan/binding masal, contoh [_.bindAll(object, methodNames)](http://lodash.com/docs#bindAll) didalam lodash.
206-
````
206+
207207

208208
## Partial functions/Fungsi sebagian
209209

@@ -219,7 +219,6 @@ let bound = func.bind(context, [arg1], [arg2], ...);
219219

220220
Yang mana mengijinkan kita untuk mengikat konteks sebagai `this` dan memulai argumen dari sebuah fungsi.
221221

222-
For instance, we have a multiplication function `mul(a, b)`:
223222
Contoh, kita mempunyai sebuah fungsi perkalian `mul(a, b)`:
224223

225224
```js
@@ -244,14 +243,13 @@ alert( double(4) ); // = mul(2, 4) = 8
244243
alert( double(5) ); // = mul(2, 5) = 10
245244
```
246245

247-
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".
249247

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.
251249

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`.
253251

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:
255253

256254
```js run
257255
function mul(a, b) {
@@ -267,23 +265,23 @@ alert( triple(4) ); // = mul(3, 4) = 12
267265
alert( triple(5) ); // = mul(3, 5) = 15
268266
```
269267

270-
Why do we usually make a partial function?
268+
Kenapa kita umumnya membuat fungsi parsial?
271269

272-
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`.
273271

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.
275273

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.
277275

278-
## Going partial without context
276+
## Menjadi parsial tanpa konteks
279277

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.
281279

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.
283281

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.
285283

286-
Like this:
284+
Seperti ini:
287285

288286
```js run
289287
*!*
@@ -302,29 +300,28 @@ let user = {
302300
}
303301
};
304302

305-
// add a partial method with fixed time
303+
// tambahkan method parsial dengan waktu tetap
306304
user.sayNow = partial(user.say, new Date().getHours() + ':' + new Date().getMinutes());
307305

308306
user.sayNow("Hello");
309307
// Something like:
310308
// [10:00] John: Hello!
311309
```
310+
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 "`)
312314

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?
319316

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.
321318

322-
## Summary
319+
## Kesimpulan
323320

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.
325322

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`.
327324

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*.
329326

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

Comments
 (0)