Все логично ведь, геттер же — это обычная функция. Она у вас вызывается уже после того, как значение в a изменилось. А в ключе значение старое, потому что примитивные типы передаются по значению.
Обычно для этого используют методы типа _.property, _.has, _.get из underscore/lodash или же библиотеки для поиска по JSON типа https://github.com/dfilatov/jspath
На JS с помощью Canvas API (если на клиенте надо) или на PHP/Node.js с ImageMagick можно загрузить изображение и дальше смотреть изменение цвета конкретных пикселей (с зеленого на малиновый и обратно). Но вообще это в простейших случаях, а в более сложных надо ботать "компьютерное зрение".
А есть сейчас какие-то книги по ES6, которые описывают все с нуля а не только отличия от ES5 (ну кроме спецификации, конечно)? ES6 — это надмножество ES5, поэтому доучить новые фичи при хорошем понимании ES5 будет довольно просто, а вот обратное неверно.
У вас ошибка в строке: var worker = new Worker(blobURL[0]);
вы передаете только первый символ урла блоба. А надо передавать весь урл. То есть писать так: var worker = new Worker(blobURL);
Задачи дают на общие знания CS и умение соображать, и обычно разрешают их решать на любом знакомом вам языке (иногда даже можно на псевдокоде). Примеры реальных задач из известных компаний можно посмотреть на www.careercup.com
Это вполне могут быть не настоящие ошибки в JS-коде, а последствия работы разных антивирусов и файрволов на стороне клиента, а также серверных прокси-серверов, которые тоже могут модифицировать контент.