Điều này không thành công vì các tham chiếu đến các phương thức Javascript không bao gồm một tham chiếu đến chính đối tượng. Một cách đơn giản và đúng đắn để gán phương thức console.log
cho một biến và áp dụng lệnh gọi console
là sử dụng bind
phương thức trên log
phương thức, truyền console
dưới dạng đối số:
var log = console.log.bind(console);
Có một this
đối số ẩn cho mọi phương thức và do thiết kế ngôn ngữ được cho là không tốt, nó không bị đóng lại khi bạn nhận được tham chiếu đến một phương thức. Các bind
mục đích phương pháp là để preassign đối số chức năng, và trả về một chức năng chấp nhận phần còn lại của các đối số hàm được mong đợi. Đối số đầu tiên bind
luôn phải là this
đối số, nhưng bạn thực sự có thể gán bất kỳ số lượng đối số nào bằng cách sử dụng nó.
Việc sử dụng bind
có một ưu điểm đáng chú ý là bạn không làm mất khả năng chấp nhận nhiều đối số của phương pháp. Ví dụ, console.log
có thể thực sự chấp nhận một số lượng đối số tùy ý và tất cả chúng sẽ được nối trên một dòng nhật ký duy nhất.
Đây là một ví dụ về việc sử dụng bind
để gán trước nhiều đối số hơn cho console.log
:
var debugLog = console.log.bind(console, "DEBUG:");
Lời mời debugLog
sẽ đặt trước thông điệp nhật ký bằng DEBUG:
.