JSON - это формат данных. У него нет понятия функций, как и у любого другого формата данных (HTML, XML, простой текст).
Единственное назначение, которое может показаться, это сжатие данных. Почему бы вам просто не сжать данные, используя вместо этого одну из множества стандартных реализаций?
Если вы ожидаете, что ваши данные будут иметь огромные избыточности, которые не будут эффективно сжиматься обычной схемой сжатия, тогда вы могли бы сделать что-то вроде того, о чем вы здесь говорите, например,
var obj = {
a : 'a constant',
b : '[fld=a] and b constant'
}
и ваш код на любом конце должен был бы реализовать и проанализировать это. Таким образом, он будет искать [fld=x]
в каждом элементе и заменять его значением x
. Но это все еще просто схема сжатия данных. Это не имеет ничего общего с JSON.
редактировать
Javascript Objects
и JSON
- это совершенно разные (хотя и связанные) вещи. Объект Javascript - это любая сущность в Javascript. JSON - это формат данных, предназначенный для представления программного объекта в текстовой нотации, в частности, для обмена данными с другими программными объектами по проводам (или когда внутренний формат не является переносимым).
Если вы просто спрашиваете, может ли объект Javascript содержать функцию, которая ссылается на другого члена, то, конечно, вы уже ответили на свой вопрос!
Вам не нужна самозапускающаяся функция, которая просто создает работу, и она также не будет отражать какие-либо изменения, внесенные в A в будущем. Просто выполните обычную функцию:
b : function() { return this.a + ' and b constant'; };
или, более вероятно, просто создайте "метод" и оставьте свои поля в покое:
var obj = {
a : 'a constant',
b : 'b constant',
ab: function() { return a+b }
}