Mid #this#call#apply#bind#polyfill
call, apply, bind khác nhau thế nào? Tự viết bind
⚡ Trả lời nhanh
`call(ctx, a, b)` và `apply(ctx, [a, b])` gọi hàm ngay với `this` chỉ định (khác ở cách truyền đối số). `bind(ctx, ...pre)` trả về hàm mới đã khóa `this` và đối số đầu (partial application), không gọi ngay; `this` đã bind không thể bị override bởi call/apply.
Ví dụ và bind tự viết
main.js · sửa được
Bản polyfill này đơn giản hóa: bản chuẩn còn xử lý khi gọi bằng new (bỏ qua ctx, giữ prototype) và đặt name/length cho hàm trả về.
| Gọi ngay | Truyền đối số | |
|---|---|---|
call | có | liệt kê |
apply | có | mảng |
bind | không, trả hàm mới | liệt kê, có thể một phần |