Всем привет.
Конструкторы Number и String позволяют пихать в их экземпляры любые свойства, при этом, при стрингификации, получаем или строку или число, соответственно:
var string = new String( 'WTF' ),
number = new Number( 42 );
string.a = 12321;
number.b = 'qwerw';
number.c = {};
var json = JSON.stringify( {x: number, y: string } );
alert(json)
Как повторить тот же эффект для кастомного конструктора?
function X () {}
X.prototype.valueOf = function() { return 42; }
var json = JSON.stringify( { a: new X });
alert( json );
Мне нужно, чтоб вместо "пустого объекта" в json попало 42 (причем, тип заранее не известен: это может быть как число или строка, так и null).