Всем привет, у меня есть 2 объекта, которые нужно соединить в один. 
Причем так что-бы они дополнили друг-друга.
Примерно так:
var a = {
	bar: 'hello world',
	foo: {
		a: 1,
		b: 2,
	}
}
var b = {
	foo: {
		c: 3
	},
    /*jqueryprop: $('#btn')*///Вот тут проблема 
}
deepExtend(a, b);
console.log(a)
/*Object:
	bar: "hello world"
	foo: Object
		a:1
		b:2
		c:3
*/
Для этого я нашел функцию, которую можно глянуть в примере на 
https://jsfiddle.net/daggkeu1/2/
Все вроде работает, пока среди свойств не встречается какой-нибудь объект типа такого: $('#btn')
Он получается охренительно большой в глубину и я получаю Maximum call stack size exceeded
Пока наблюдаю такое поведение только у jquery объектов, но хотелось-бы понять как все-таки подобное можно отследить и правильно скопировать?
Спасибо!