Я хотел бы объявить некоторые переменные, а затем позволить функции строить фактические объекты и назначать их ссылку на эти ранее объявленные переменные.Javascript - Установить значение переменной внутри функции
То, как я делаю это сейчас, работает, но оно становится утомительным со многими переменными.
function bar(obj) {
var newObject = {'an':'object'};
obj['element'] = newObject;
}
function foo() {
var ref={};
bar(ref);
ref=ref.element; // Tedious line
}
Для тех, кому интересно, почему я хотел бы сделать такую вещь, я построил простую функцию для создания DOM из JSON. Само собой что-то подобное, с #bind
используется, чтобы сделать то, что делает bar
в предыдущем фрагменте кода:
var legend = {};
$('#element').append(['form',['fieldset',
['legend',{'#bind':legend},['text':'Legend title']]
]].getDomForThis());
legend=legend.element;
Теперь я могу дописать новые элементы после легенды с чем-то вроде
for(fieldName in fields) {
legend.insertAfter(['div',[['input',['name':fieldName]],...]].getDomForThis());
}
Я хотел бы чтобы избежать необходимости писать утомительную линию. Это как createElement
и appendChild
, одного вызова функции должно быть достаточно!
ОБНОВЛЕНИЕ: После некоторой мысли, я считаю, что нет возможности сделать это с помощью Javascript. Я надеялся на какую-то скрытую магию Javascript где-то, но у меня есть причина думать, что этого не произойдет.
В принципе, я бы хотел присвоить переменной ссылку новое значение, не создавая новую ссылку. Но аргумент функции a
отличается от переменной v
, которую он представляет. Указанный объект один и тот же, но адрес двух переменных отличается. Следовательно, присвоение нового значения a
не может каким-либо образом изменить значение v
.
Другими словами, каждая переменная имеет свой собственный адрес, и нет другого способа изменить то, на что она указывает, чем ссылаться на нее явно.
И в моем случае, поскольку ref
является «закрытым» для функции, нет доступа к нему из другого места.
Слишком плохо ...
Я ошибаюсь или «ref = ref.element;» в вашем первом примере следует читать «ref = obj.element;» ? – MaxiWheat
И не должен ли бар (obj) в том же месте быть баром (ref)? – epascarello
вправо, я колебался между ними. Исправлена. – Gzorg