Если у вас есть что-то вроде этого:
var VarB = null, VarA = new ClassA(VarB);
, а потом, когда вы будете готовы, вы сделаете это:
VarB = new ClassB();
то, что удерживает объект "VarA", это значение "null", которое вы передали, и вы изменили значение "VarB" на что-то другое. Нет способа сделать то, что вы описываете, по крайней мере, не совсем так. JavaScript строго передается по значению , что означает, что при выполнении вызова функции вы передаете значение выражения аргумента в функцию. Внутри конструктора «ClassA» тот факт, что «null» произошел от переменной в вызывающей области, называемой «VarB», полностью скрыт; это просто «ноль».
Теперь, что вы можете сделать, это:
var VarB = { actualB: null }, VarA = new ClassA(VarB);
, а затем и позже:
VarB.actualB = new ClassB();
В этом случае вы бы не изменили бы значение "VarB"; Вы бы изменили значение свойства объекта, на который ссылается «VarB». Если бы код «ClassA» был написан для хранения этого параметра и обращения к его свойству «actualB», он бы работал.