Tengo una serie de cadenas. Quiero recortar cada cuerda en la matriz.¿Por qué no pasar `` '.trim() `directamente al trabajo de devolución de llamada` [] .map() `?
pensé usando [].map()
con ''.trim()
funcionaría ...
[' a', ' b ', 'c'].map(String.prototype.trim);
... pero mi consola dijo ...
TypeError: String.prototype.trim called on null or undefined
No puedo ver ningún null
o undefined
valores en mi matriz.
String.prototype.trim()
y Array.prototype.map()
se definen en Chrome 17, que estoy usando para probar.
¿Por qué no funciona? Tengo la sensación de haber pasado por alto algo obvio.
Me doy cuenta de que podría hacer un bucle o soltar una función allí. Sin embargo, ese no es el punto de esta pregunta.
! Sabía que sería algo obvio. Mi cerebro no está funcionando hoy. Gracias Slace. – alex
Entonces, ¿por qué esto no funciona?'['a', 'b', 'c']. map (String.prototype.trim.apply);' ... y ¿por qué funciona esto fuera del contexto 'map()'? 'String.prototype.trim ('a')' (tenga en cuenta que en realidad * no funciona * - devuelve una cadena vacía - pero tampoco arroja un error). – nrabinowitz
@nrabinowitz: 'apply''s' this' no se une a 'String.prototype.trim' - se enlaza a' undefined' o 'null' o' window'. (Esta es la razón por la que inventaron 'Function.bind()'.) – Ryan