Я исследую использование объекта jQuery в качестве безопасного де-реферратора, как в Groovy. Проблема, которую я пытаюсь решить, заключается в том, что я получаю JSON из вызовов AJAX, которые могут не иметь значений, которые я ищу. Мне бы хотелось, чтобы удобный метод проверял, получаю ли я значение обратно, прежде чем пытаться что-то сделать с этим значением.
Для программистов, не являющихся Groovy, если переменная в Groovy имеет значение null, вызывающие ее методы завершаются с ошибкой, а не генерируют исключения нулевого указателя.
Я могу создать пустой объект из пустой переменной, используя оператор jQuery, например:
var myvar
$(myvar).chainedfunc()
В этом примере chainedfunc будет по-прежнему выполняться для пустого объекта.
Есть ли способ предотвратить выполнение chainedfunc, если исходное значение было нулевым?
Я понимаю, что мне, возможно, придется жить с выполнением связанных функций на пустом объекте.
Примечание:
Я оставляю мысль ниже для записи, но я понимаю, что логика неверна. В случае 1 объект имеет значение null, в этом случае нет типа, поэтому нет способа создать новый объект того же типа, в случае 2 объект существует, и в этом случае я возвращаю объект без изменений. Общий вопрос все еще имеет смысл, хотя.
В этом случае возникает проблема, если исходное значение было не объектом, а массивом, поскольку я создал объект из него, чтобы избежать ошибки NULL. Для этой ситуации у меня есть следующая функция:
$.fn.safe = function(){
if (this.get(0)){
return this.get(0)
}
else return []
}
В этом случае я предполагаю, что оригинал был массивом. В идеале я хотел бы иметь возможность определить тип оригинала и вернуть пустой экземпляр того же типа.
// this does not work because type is not a constructor
$.fn.safe = function(){
var type = typeof this.get(0)
return this.get(0) || new type()
}