Loại mã này thường được tạo bởi các bộ chuyển đổi (như Babel), để chuyển đổi JavaScript hiện đại - sử dụng các bổ sung gần đây nhất cho đặc tả - thành phiên bản JavaScript được hỗ trợ rộng rãi hơn.
Dưới đây là một ví dụ nơi mô hình dịch chuyển này xảy ra:
Giả sử chúng ta có mã gốc này trước khi dịch mã:
import {myfunc} from "mymodule";
myfunc();
Để tạo mã tương thích ES5 này, bạn có thể làm điều này:
"use strict";
var mymodule = require("mymodule");
mymodule.myfunc();
Nhưng ở đây chúng tôi sẽ thực hiện myfuncvới mymodulenhư thisgiá trị, mà không xảy ra trong mã gốc. Và mặc dù điều đó có thể không phải luôn luôn là một vấn đề, tốt hơn là đảm bảo rằng chức năng này hoạt động giống như trong phiên bản gốc , ngay cả khi chức năng đó sẽ sử dụng một thistham chiếu - việc sử dụng thistrong đó myfunccó thể bất thường hoặc thậm chí vô dụng như thế nào ( bởi vì trong phiên bản gốc cũng vậy undefined).
Vì vậy, ví dụ, nếu mã gốc sẽ gây ra lỗi do this.memberFun()tham chiếu trong hàm, thì nó cũng sẽ ném trong phiên bản được phiên mã.
Vì vậy, đó là toán tử dấu phẩy được sử dụng để loại bỏ sự khác biệt đó:
(0, mymodule.myfunc)();
Cấp, trong mã mà bạn tự viết, bạn sẽ không bao giờ có trường hợp sử dụng tốt cho mẫu này, vì bạn sẽ không sử dụng thisở myfuncnơi đầu tiên.
bindphương pháp liên kết. Đây chỉ là một sự thay đổi bối cảnh. Bạn không thể cắt hoặc mất ràng buộc (trái phiếu được tạo bởibind).