In order to achieve a string in form that you presented you can use:
var object1 = {"abc":{"name":"myabcname"}};
var object2 = {"def":{"name":"defname"}};
var myObject = Object.assing({}, object1, object2);
var myString = JSON.stringify(myObject);
// "{"abc":{"name":"myabcname"},"def":{"name":"defname"}}"
Danger of using Object.assign - It is only one level deep copy.
Example:
var me = {
  name: "Tomasz",
  lastName: "Bubała",
  social: {
    github: "@tomegz",
    twitter: "@tomaszbubala"
  }
};
var dev = Object.assign({}, me);
/* This is fine */
dev.name = "Tom";
// => "Tom"
me.name;
// => "Tomasz"
/* This is danger */
dev.social.twitter = "@example";
// => "@example"
me.social.twitter;
// => "@example"
Hopefully in ES7 you will be able to use spread operator to achieve this effecft:
var myObject = {...object1, ...object2};