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

前端 未结 1 1184
南笙
南笙 2020-12-01 21:57

For some reason I can\'t use String.prototype.trim.call as a callback for array methods, such as map or filter.

In this case,

相关标签:
1条回答
  • 2020-12-01 22:24
    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))
    
    0 讨论(0)
提交回复
热议问题