Функция журнала консоли ожидает, что this
будет ссылаться на консоль (внутренне). Рассмотрим этот код, который повторяет вашу проблему:
var x = {};
x.func = function(){
if(this !== x){
throw new TypeError('Illegal invocation');
}
console.log('Hi!');
};
// Works!
x.func();
var y = x.func;
// Throws error
y();
Вот (глупый) пример, который будет работать, так как он связывает this
с console
в вашей функции make:
var make = function(callback,params){
callback.call(console, params);
}
make(console.log,'it will be accepted!');
Это также будет работать
var make = function(callback,params){
callback(params);
}
make(console.log.bind(console),'it will be accepted!');