Глобальная a и локальная а ссылаются на один и тот же объект. Вы переопределяете только локальную a из скоупа функции b.
Ваш код для наглядности можно переписать так:
var a = {};
+function b(c) {
console.log(a === c); // true
c.a = 10;
c = null;
console.log(a === c); // false
}(a);
console.log(a); // { a: 10 }
Тут а и c ссылки которые ссылаются на один и тот же объект. Вы переопределили c, а продолжает ссылаться на объект. Почитайте.
delete не должен же трогать прототип вообще в этом случае
С чего вы так решили?
Третий вызов delete находит свойство b в экземпляре и удаляет его.
Четвертый вызов delete не находит свойство b в экземпляре, спускается по цепочке в прототип, находит там свойство b и удаляет в объекте по ссылке b свойство c. Сам объект b из прототипа через экземпляр удалить нельзя, а любые его свойства можно.
Все по канонам JavaScript. Почитать.
Я использую методологию SMACSS и в SASS разбиваю проект на слои вот так:
_mixins.scss
_variables.scss
_base.scss - тут все стили для тегов, в том числе ресеты и нормолайзы
_layout.scss - тут основные блоки типа футер, хедер с именованием например .l-header
_modules.scss - тут стили типа div.container, div.product__item
_themes.scss - тут стили которые переопределяют некоторые элементы, например акционную лейбу или кнопку купить другого цвета
_state.scss - тут все стили которые отвечают за состояние button:active, a:hover и в том числе media queries. Так что если нужно поправить что-то для мобильной верстки я сразу иду сюда
styles.scss импортирует все выше указанные файлы. Почитайте доку по этому препроцессору, там указано что файлы которые начинаются с _ он конкатенирует в 1 файл.
Собсн по этому мне и понравился SCSS + SMACSS
Ответ написан
Комментировать
Комментировать
Оценили как «Нравится»
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.