Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.07.2012, 23:27
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

JSON.stringify и .valueOf
Всем привет.
Конструкторы 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).
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #2 (permalink)  
Старый 24.07.2012, 23:43
Аватар для Dim@
Профессор
Отправить личное сообщение для Dim@ Посмотреть профиль Найти все сообщения от Dim@
 
Регистрация: 21.04.2012
Сообщений: 951

function X(){
 var valueOf = new Number(92);
 valueOf.lol = "LOOOOl";
 return valueOf; 
}
d = new X();
alert(d);
alert(d.lol)

может так или надо для любого конструктора?
Спасибо интересная задачка
Ответить с цитированием
  #3 (permalink)  
Старый 25.07.2012, 00:06
Профессор
Отправить личное сообщение для oneguy Посмотреть профиль Найти все сообщения от oneguy
 
Регистрация: 31.05.2012
Сообщений: 396

Функция JSON.stringify использует метод toJSON на конвертируемых объектах. Пример:
function X () {}
X.prototype.valueOf = function() { return 42; }
X.prototype.toJSON=X.prototype.valueOf;
var json = JSON.stringify( { a: new X });
alert( json );

Последний раз редактировалось oneguy, 25.07.2012 в 00:10.
Ответить с цитированием
  #4 (permalink)  
Старый 25.07.2012, 00:07
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Dim@,
valueOf это вобщето метод конструкторов Number ......

Последний раз редактировалось dmitriymar, 25.07.2012 в 00:17.
Ответить с цитированием
  #5 (permalink)  
Старый 25.07.2012, 02:35
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

oneguy, спасибо.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JSON.stringify в IE8 sysif Internet Explorer 13 15.02.2012 09:11