Опция, которая может работать в этой конкретной ситуации , поскольку вы хотите присвоить свойству window
, это сделать window.childRef
getter , который возвращает someParentObj.someChildObj
:
var someParentObj = {
someChildObj: {originalChildProp: ['some', 'array']}
};
window.parentRef = someParentObj;
Object.defineProperty(window, 'childRef', { get() { return someParentObj.someChildObj }});
someParentObj.someChildObj = {differentChildProp: ['other', 'array']}
console.log(parentRef.someChildObj)
console.log(childRef)
Если вы не присваивали свойству объекта, например, если childRef
была автономной переменной с областью действия блока, а не глобальнойобъект, это не было бы возможно.Поэтому, если вы хотите использовать шаблон такого типа, всегда используйте объект.
Вы также можете использовать прокси, если можете манипулировать ссылкой на базовый объект (например, если вы не работали с window
), которая может выполнять в основном то же самое, но она более сложная и менее поддерживаемая.