Пожалуйста, проверьте следующую структуру объекта:
var obj_parent = {
obj_child : {
obj_child_var : 15,
fnc : function() {
let self = this;
alert('Called : obj_parent>fnc() | obj_child_var : '+self.obj_child_var);
obj_parent.obj_fnc();
}
},
obj_fnc : function() {
alert('Called : obj_parent>obj_fnc();');
}
};
$(function() {
obj_parent.obj_child.fnc();
});
Тестовый код на Codepen , просто нажмите кнопку «Нажмите здесь» для тестирования.
В строке # 7 obj_parent.obj_child.fnc () вызывает функцию obj_parent.obj_fnc (), которая является родителем его родителя.
Если бы это не был родительский родитель, я мог бы использовать this для доступа (например, к obj_child_var, доступному в строках № 5, № 6) к функции.
Проблема здесь в том, что если мне придется переименовать obj_parent, мне придется переименовывать его везде внутри него.
Каков будет лучший способ реструктурировать код, когда любой дочерний элемент или несколько дочерних элементов внутри него могут получить доступ к любому другому дочернему элементу из верхнего корня объекта, не используя его прямого имени ('obj_parent'), но в более общем смысле.
например: let self_root = указатель на 'obj_parent';
И используйте этот self_root вместо obj_parent внутри каждого уровня, везде внутри obj_parent;
Здесь я хочу сохранить весь код компактным внутри: obj_parent = {..Everything ..}
И не хочу помещать какой-либо код 'obj_parent' вне его, например, используя:
obj_parent.prototype. * * * = * * *;
Есть ли какие-либо предложения по наилучшему способу достижения этого путем реструктуризации кодов только внутри obj_parent = {...}?
Короче, я ищу что-то вроде следующего внутри obj_parent.obj_child.fnc ():
...
fnc : function() {
let root_obj_pointer = this.parent;// Points to 'obj_parent';
root_obj_pointer.obj_fnc();// Instead of obj_parent.obj_fnc();
}
...
Так что мне не нужно переименовывать 'obj_parent' в obj_parent.obj_fnc (); если корень obj_parent когда-либо будет переименован.