Как получить значение из объекта, со значением по умолчанию
Я постоянно нахожу, что передаю значения конфигурации для функций, обращающихся к ним следующим образом:
var arg1 = 'test1';
if(isUndefined(config.args.arg1)){
arg1 = config.args.arg1;
}
var arg2 = 'param2';
if(isUndefined(config.args.arg2)){
arg2 = config.args.arg2;
}
var arg3 = '123';
if(isUndefined(config.args.arg3)){
arg3 = config.args.arg3;
}
где я потом использую их следующим образом:
var url = '<some-url>?id='+arg1+'&='+arg2 +'=' + arg3;
Предоставляет ли jQuery/ExtJS или любую другую инфраструктуру решение для доступа к таким переменным простым способом и дает переменные значение по умолчанию?
Что-то вроде:
getValueOfObject(config,'args.arg3','<default>');
Или может быть стандартное решение для этого.
Примечание:
Я также думал об общей схеме, где у вас есть значения по умолчанию
var defaults = {
args: {
args1: ....
}
...
}
и выполнить слияние объектов.
И затем кодирование объекта в параметр String. Но поскольку вы можете видеть, что объекты значения также иногда содержат имена параметров.
Ответы
Ответ 2
Как правило, можно использовать или оператор, чтобы назначить значение по умолчанию, когда какая-либо переменная оценивается как ложная:
var foo = couldBeUndefined || "some default";
так:
var arg1 = config.args.arg1 || "test";
var arg2 = config.args.arg2 || "param2";
предполагая, что config.args
всегда определяется, как следует из вашего примера.
Ответ 3
попробуйте var options = extend(defaults, userOptions);
Таким образом вы получаете все userOptions и возвращаетесь к значениям по умолчанию, когда они не передают никаких параметров.
Примечание используйте любую extend
, которую вы хотите.