Я работаю над проектом, где у меня есть литерал корневого объекта, который хранит такие вещи, как константы и перечисления, используемые во всем остальном, и вложенные литералы объектов для разделения различных функций. Что-то вроде этого:цепочка доступа javascript с вложенными объектными литералами
root = {
enum : {
FIRSTVAL : 0,
SECONDVAL : 1,
THIRDVAL : 2,
},
CONST : 0xFFE8,
}
root.display = {
renderer : function() {
// do something...
do_some_fun(enum.FIRSTVAL);
}
// other functions
}
root.engine = {
processor = function() {
// do some stuff
run_calculations(CONST);
}
// some other functions
}
В основном я использую объект верхнего уровня буквального как пространство имен, с другими объектами/функции разбросаны в нескольких файлах. Единственная проблема заключается в том, что свойства корневого объекта недоступны для корневых дочерних элементов, таких как перечисление в root.display.renderer или CONST в root.engine.processer. Если root был объектом функции, это было бы просто выполнить через цепочку прототипов, но я хочу, чтобы объект root был статическим и просто служил контейнером.
Каков наилучший способ выполнения этой структуры в Javascript? Есть ли лучшая структура, которую я могу использовать, которая выполняет ту же задачу инкапсуляции проекта?
Редактировать: Извините, я неправильно ссылался на наследование. Я знаю, что свойства root могут быть доступны напрямую (через root.whatever). Я хочу знать, возможно ли, чтобы эта ссылка на root была неявной внутри дочерних элементов root; если использование прямой ссылки не является стандартной практикой для Javascript?
Почему не корневые свойства доступны из детей просто как '' root.enum', root.CONST' и т.д.? –
может получить доступ к чему-либо из корня, я думаю, вы должны включить пример ребенка. – rab
Это не похоже на наследование. –