2013-11-07 3 views
0

Добрый день.обрабатывать пустой объект, переданный как аргумент в javascript

У меня есть эта проблема: я должен предоставить способ передать некоторые необязательные аргументы функции javascript, это довольно просто, нормально. Я решил сделать все аргументы объектами, поэтому каждый, кому нужно вызвать функцию, должен указать имя аргументов. Но большую часть времени редакторы просто вызывают функции со всем аргументом, не опуская пустых аргументов, потому что аргументы передаются на страницу другим способом (скажем, в строке запроса, но это не имеет значения).

здесь, как я сделал функцию:

function playAnimation(options) { 
var timeOutAnimation = options.animationDuration || 15; 
var backgroundColor = options.color ; // this argument will be always present, so no default. 
//more code... 
} 

и это вызов (я использую код PHP для целей примера)

$(document).ready(function(){ 
    var opt = { 
     animationDuration: '<?php echo $_GET['stopAnimationAfter'] ?>', //could be a number, or nothing. 
      color: 'black' 
     } 
    playAnimation(opt);  
}); 

проблема в том, что аргумент и он швыряет, что он никогда не падает на значение по умолчанию. Я не могу изменить способ вызова функции (т. Е. Проверить возможность доступа к параметру «получить») и построить вызов функции соответственно, я должен найти способ проверить аргументы внутри моего javascript.

есть сейф способ сделать это, например options.animationDuration === "undefined" (doens't work) или что-то в этом роде

РЕШЕНИЕ: помещая «вокруг каждого аргумента в вызове», делает аргумент полным или пустым соответствующим образом. то я могу проверить их

+0

Какова ценность 'options.animationDuration'? Если значение этого параметра было ложным, я не понимаю, почему он не вернется к умолчанию. Действительно ли значение 'options.animationDuration' является правдивым? – Mingle

+0

это может быть число или ничего, если присутствует аргумент «get», то это число, иначе это ничего. –

ответ

1

Вы можете использовать:.

function playAnimation(options) { 
    options = options || {} 
    var timeOutAnimation = options.animationDuration || 15; 
    var color = options.color; 
} 

Чтобы задать параметры для пустого объекта, если он не существует. Вы также можете проверить неопределенными, как это, если вы хотите:

if(typeof options === "undefined") { 
    // options not passed 
} 

Вот fiddle, который демонстрирует.

+0

Извините, я добавлю дополнительную информацию, но параметры могут содержать больше аргументов, некоторые из них могут быть установлены, а некоторые другие не ... –

+1

Не имеет значения. 'options' либо не определено, либо нет, и в этом случае вы можете использовать свои параметры по умолчанию – CodingIntrigue

+0

Я попробую как можно скорее! Благодарю. –

Смежные вопросы