a) $ .extend в основном означает, что если вы передаете объект json, который переопределяет параметры по умолчанию, задайте эти значения для свойств.если вы передадите {options1: "1", options3: "3"}, то у ваших настроек будут эти два параметра переопределены значениями, которые вы передали
b) settings - это конечный объект настроек, который будетиспользуется библиотекой.поэтому ваша библиотека в основном будет обращаться к settings.options1 settings.options2 везде, где это необходимо, и к nt defaultVal1, defaultVal2, если они являются свойствами.
c) если не заданы параметры, т.е. параметры не определены, то не сбрасывать значения по умолчанию.В основном, функция расширения работает в том, что она просматривает имена proprty по умолчанию, проверяет, есть ли у параметров json эти свойства, если да, то сбросить их, иначе нет.теперь, если вы передадите неопределенное значение, это потерпит неудачу, следовательно, {}