Мне было интересно, можно ли вызвать частный метод из другого частного метода в Javascript. У меня есть код, подобный следующему:
function Balloon() {
function density( altitude, gas ) {
/* KG/CU M */
var gas = {
/* GAS DEFINATIONS - wolframalpha.com */
"hydrogen" : .00100794,
"helium" : .004002602,
"nitrogen" : .0140067,
"methane" : .0160425,
"ammonia" : .0170305,
"neon" : .0201791,
"dry air" : .0289644
}
var alt = {
/* CONSTANTS - http://en.wikipedia.org/wiki/Density_of_air#Altitude */
"p0" : 101325, // Sea level standard atmospheric pressure (Pa)
"T0" : 288.15, // Sea level standard temperature (K)
"g" : 9.80665, // Earth-surface gravitational acceleration (m/s^2)
"L" : 0.0065, // Temperature lapse rate (K/m)
"R" : 8.31447 // Universal gas constant (mol * K)
}
var temperature = alt["T0"] - alt["L"] * altitude;
var pressure = alt["p0"] * (1 - (( alt["L"] * altitude ) / alt["T0"] )) ^ (( alt["g"] * gas[gas] ) / ( alt["R"] * alt["L"] ));
var density = ( pressure * gas[gas] ) / ( alt["R"] * temperature );
return density;
}
function lift( altitude, gas ) {
/* KG/CU M */
return density( altitude, "dry air" ) - density( altitude, gas );
}
this.requiredGas = function( altitude, gas, ratio, weight ) {
return (( weight / 1000 ) * ratio ) / lift( altitude, gas );
}
}
и я пытаюсь получить к нему доступ, например:
balloon = new Balloon();
var required = balloon.requiredGas(10, "helium", 1.5, 4530);
Я видел, как люди объявляли this из-за пределов приватных функций таким образом, но не не знаю, если это, как подойти к этому.
densityнаходится в той же области, что иlift, так что это не проблема. Это больше похоже на то, что вы не передаете допустимые числа функции. - person Felix Kling   schedule 09.07.2011liftзвонитdensity; если вы поместитеalertилиconsole.logв верхней частиdensity, вы увидите, что это правда. Проблема, скорее всего, в том, что вы делите на ноль, т.е. чтоliftвозвращает0. - person Domenic   schedule 09.07.2011"dry air"не является допустимым числом, поэтому он возвращаетNaN(в вашем случае). Деление на0возвращаетInfinity. - person Felix Kling   schedule 09.07.2011density? - person Felix Kling   schedule 09.07.2011function density? - person epascarello   schedule 09.07.2011