buenas,
tanto la forma JSON como la tradicional (constructores) siguen siendo lo mismo. lo que cambia es la forma de escribirlo y, en el caso de JSON, el constructor de los objetos es el nativo (Object). en la forma tradicional, simplemente debes invocar otro constructor que cree un objeto pero dentro de la declaracion de uno de tus constructores.
Código:
// constructores ;
function Foo(){
this.bar = new Bar();
}
function Bar(){
this.candy = 'candy';
}
foo = new Foo();
console.log(foo.bar.candy); // 'candy';
console.log(foo.constructor); // Foo;
// JSON ;
foo = {
bar: {
candy: 'candy'
}
};
console.log(foo.bar.candy); // 'candy';
console.log(foo.constructor); // Object;
ahora bien, segun lo que tu quieres es que un objeto te devuelva un string y que una propiedad de ese objeto devuelva otro string. asi a la ligera, se me ocurre que solo puedes hacerlo con el constructor nativo String.
Código:
function Foo(){
this.bar = new String('rab');
this.bar.candy = 'candy';
}
foo = new Foo();
alert(foo.bar); // 'rab';
alert(foo.bar.candy); 'candy';