Я помню, что всегда, когда я хотел передать console.log
в качестве параметра обратного вызова какой-либо функции, он не работал, если я не использовал метод bind()
для привязки console
к нему.
Например:
const callWithTest = callback => callback('test');
callWithTest(console.log); // That didn't use to work.
callWithTest(console.log.bind(console)); // That worked (and works) fine.
Смотрите Uncaught TypeError: Незаконный вызов в javascript.
Однако недавно я заметил, что console.log()
отлично работает даже при вызове на объект, отличный от консоли. Например:
console.log.call(null, 'test');
logs 'test'
.
Когда и почему это изменилось? Описывает ли спецификация что-нибудь об этом?