Я подписался на курс по основам JS, организованный Флавио Копесом. Каждый день Флавио рассылает участникам электронные письма с парой вопросов/задач. Всего должно быть 35 писем. Отвечать на них не обязательно, но ответы на вопросы являются важной частью курса. Поэтому я решил поделиться своими ответами с миром: в лучшем случае это может помочь кому угодно, кроме меня, в худшем — только мне.

В чем разница между call() и apply()?

Разница заключается в обозначениях: call() принимает функцию и список аргументов, тогда как apply() принимает функцию и массив аргументов.

Как мы можем добиться инкапсуляции в JavaScript?

Этого можно добиться, определяя функции внутри функций (см. примеры в ответе на 11-е письмо). Вложенные функции не видны в глобальной области видимости, поэтому их совершенно безопасно использовать, если требуется инкапсуляция.