¿Cuál es la diferencia entre dos conjuntos de códigos? Sé qué función de flecha hace, pero ¿por qué la expresión tradicional no funciona?
Serie 1
recorrer todos los elementos
checkboxes.forEach( function (checkbox){ console.log(checkbox); if( checkbox === this || checkbox === lastChecked) { inBetween = !inBetween; console.log(" start checking them inbetween"); } if(inBetween) { checkbox.checked = true; } });Juego - 2
recorrer todos los elementos
checkboxes.forEach(checkbox => { console.log(checkbox); if (checkbox === this || checkbox === lastChecked) { inBetween = !inBetween; console.log('Starting to check them in between!'); } if (inBetween) { checkbox.checked = true; } });Set - 1 es foreach con estilo de definición ES5 mientras que Set-2 es para ES6. Asegúrese de que el destino o la versión sean compatibles con ES5 para que Set-1 funcione.
Además, es posible que desee intentar reemplazar esto con self en el conjunto 1 y definir self como esto antes de foreach o use bind
var self = this; this.addNewObjects = function(arr){ arr.forEach(function(obj) { self.addObject(new Obj(obj.prop1, obj.prop2)); }); }o
this.addNewObjects = function(arr) { arr.forEach(function(obj) { this.addObject(new Obj(obj.prop1, obj.prop2)); }.bind(this)); }Creo que puede ser que uses this en el ámbito de la función forEach() , esta es una de las dos diferentes.
más explicación es: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions