Comments 6
Мне очень интересно узнать, как другие специалисты JavaScript решают подобные проблемы.
Пишут на typescript без any и с тайпгардами на всех входах-выходах из кода TS.
Субъективщина конечно, но вот лично мне это нравится куда больше обнимашек с дебаггером.
ЗЫ: Те, кто слабее духом, но всё же достаточно сильны, чтоб не обниматься с дебаггером — пишут тесты.
Еще может быть такое, что объект проедет по цепочке JSON.stringify и JSON.parse, растеряв по дороге часть пропертей, а потом, еще и смимикрирует по прототипу под первоначальный объект через услужливую соломку в виде Object.create. В итоге у тебя выродится где-то внутрях костыльного фреймворка (правда, будет не так концентрированно, а размажется по 20-30 методам):
function lookBroIveLostSomeProperty(someObject: SomeObject): SomeObject {
const {
someProperty,
...oO
} = JSON.parse(JSON.stringify(someObject));
return Object.assign(Object.create(SomeObject.prototype), oO);
}
А я, когда мне надо было понять, где дёргается свежесозданный объект, просто подменял его на его копию, завёрнутую в Proxy. Поставил внутри геттера/сеттера (в зависимости от конкретной задачи — мне надо было внутри геттера) либо debugger, либо console.trace, — и всё как на ладони, даже в минифицированном коде.
Другие специалисты JavaScript просто не засоряют глобальное пространство имен.
Sign up to leave a comment.
Быстрый поиск источника нежелательных мутаций свойства объекта