Can't use String#trim as a callback for Array#map

String.prototype.trim.call(string); // 'A'
array.map(String.prototype.trim.call); // TypeError: undefined is not a function

When you invoke the call method in the first case, its this value is bound to the String.prototype.trim function. In the second case, you just access the call function without having it bound to anything - you could just have used

array.map(Function.prototype.call)

This method is getting invoked with nothing as the this value, the element from your array, the index and the whole array as parameters. When you call call not on a function, it throws. You can either use the second parameter of map or the bind method to fix the this value for the call:

array.map(Function.prototype.call, String.prototype.trim)
array.map(Function.prototype.call.bind(String.prototype.trim))