Native way to merge objects in Javascript

Using ES6 (ES2015) you can use Object.assign method:

var x = {a:1, b:2};
var y = {c:3, d:4};
var z = Object.assign({},x,y);

Using ES7 (ES2016, Chrome 60+ or Babel) you can use Object spread operator:

var x = {a:1, b:2};
var y = {c:3, d:4}; 
var z = {...x, ...y};

My answer to this will be disappointing, but still:

no

The reason for this is simple: Mr Resig's implementation of merge (or "extend" as it's called for objects) in jQuery is doing a loop, just like the one in your question. You can look at it here. And I dare say that if John Resig hasn't found a clever build-in way to do it, then the mere mortals of stackoverflow won't either :)