Я думаю, что Вы просто привыкли к записи определенного вида приложения и решения определенного вида проблемы. Вы, кажется, нападаете на это от "базы данных сначала" перспектива. Существует много разработчиков там, где данные сохраняются к DB, но производительность не является высшим приоритетом. В большом количестве случаев, помещая абстракцию по слою персистентности упрощает код значительно, и стоимость производительности является надуманным вопросом.
Независимо от того, что Вы делаете, это не ООП. Это не неправильно, это - просто не ООП, и не имеет смысла применять Ваши решения каждой othe проблемы там.
Вот так:
var isJQuery = obj instanceof jQuery; // or obj instanceof $;
if (obj.jquery) {
/* Do something */
}
Это самый простой способ. Другой вариант - проверка конструктора объекта, но учтите, что он не будет работать в глобальном контексте (например, между родительской страницей и фреймом).
Не пользователь jQuery, это не тестировалось и т. Д., Но
if (!(obj instanceof Element))
{
// ...
}
может работать, если jQuery не делает странных вещей в его упаковке. Конечно, это требует, чтобы вы знали, что obj никогда не может быть элементом, отличным от jQuery или DOM, но, надеюсь, это несложно обеспечить.
Вы можете проверить это следующим образом:
if(obj instanceof jQuery) {
// ...
}
Однако было бы не совсем правильно говорить, что элемент HTML «завернут» в объект jQuery, скорее объект jQuery представляет собой набор из нуля или больше элементов HTML. Итак, если вы действительно хотите быть осторожными, вы можете сначала проверить, содержит ли он какие-либо элементы, следующим образом:
if(obj instanceof jQuery && obj.length > 0) {
var element = obj[0];
// do something with element
}