- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
(function innerScope(){
function hi() {
var data = {};
data.importantData = {foo:1, bar:2};
return data;
}
hi();
})();
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−51
(function innerScope(){
function hi() {
var data = {};
data.importantData = {foo:1, bar:2};
return data;
}
hi();
})();
Есть огромный минифицированный жс-файл. Где-то в дебрях проскакивают нужные мне данные в расшифрованном виде (знаю где именно).
Как можно навесить хук чтобы отследить когда обращаются к полю с именем 'importantData'?
Подменить глобальные объекты не вариант, т.к. всё обёрныто в замыкание.
Может как-то подменой Function.prototype.call или Object.prototype.valueOf?
Только полная замена оригинального скрипта на модифицированный.
Если тебе это надо одноразово выполнить, то дебуггеры есть.
А вот если что-то высунуто наружу... можно попробовать пройти по цепочке.
Но хаки с Object.prototype того не стоят.
А почему не подменой Object.prototype.importantData ? Так, например, каждая запись в importantData будет складывать данные в массив.
Кстати, в консоли хрома протекают абстракции. При выполнении указанного кода important по умолчанию содержит 2 раза по true. При втором и последующих просмотрах - 3 раза по true, при создании объекта true-шек уже семь штук, после первого присваивания указанного поля в important лежит [true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, 3, true, true] (если брали тройку).
Ммм... Автодополнение. Если копипастить important или как 3_14дар жать "ап", то массив не растёт. Если с автодополнением набирать, количество элементов начинает расти.