Я новичок программист, работающий с OpenJScad, написанный на Javascript для создания 3D-моделей.Javascript доступа к динамическим свойствам объекта
Я пытаюсь понять, как структурировать свой код, чтобы я мог получить доступ к свойствам экземпляра объекта, которые динамически создаются с использованием пользовательских параметров ввода. У меня есть родительский класс шестеренки со следующим переменным ...
// Gear parent class
Gear = function(numTeeth, circularPitch, pressureAngle, clearance, thickness)
{
var pitchRadius = numTeeth * circularPitch/(2 * Math.PI);
Я делаю несколько трансмиссионных подклассов, которые принимают пользовательские параметры, то есть ...
// Spur Gear
function makeSpur(params)
{
var gear = new Gear(
params.spurTeeth,
params.circularPitch,
params.pressureAngle,
params.clearance,
params.inputBore
);
if(params.inputBore > 0)
{
var inputBore = CSG.cylinder({start: [0,0,-params.thickness2], end:
[0,0,params.thickness2], radius: params.inputBore, resolution: 16});
gear = gear.subtract(inputBore).rotateX(90);
}
return gear;
... и затем динамически производящая координаты местоположения на основе свойства pitchRadius другого объекта Гир ...
// function main
var spurGear = makeSpur(params);
spurGear = spurGear.translate([-pinionGear.pitchRadius,0,0]);
Все делает, кроме случаев, когда я пытаюсь получить доступ к свойству pitchRadius из другого экземпляра Гир. Я прочитал про прототипы и получил доступ к частным/общедоступным свойствам, но я просто не могу понять, как структурировать код, чтобы я мог получить доступ к свойствам экземпляра в main.
'var' создает локальную переменную, вы пробовали' this.pitchRadius = ... '? – elclanrs
@elclanrs Я пробовал это, но он все еще не мог получить доступ к свойству экземпляра –
Что-то еще должно быть не так с вашим кодом, чем при определении свойства в тело функции contructor с 'this.pitchRadius =', после чего он становится доступным как свойство экземпляра. Код, который вы опубликовали, должен работать, если вы используете 'this.pitchRadius' – HMR