2015-05-07 5 views
2

извините, что все это сейчас ... взяв меня, чтобы привыкнуть к этому сайту. Я понятия не имел, что вы, ребята, будете так быстро. Как я уже говорил, первые функции работают нормально, поэтому я не понимаю, почему я не могу использовать this.DonutsPH в функции getDonutsPD.Как использовать результат одной функции в другой?

function donutStore(location, minCustPh, maxCustPh, averageDpC, hoursOpen) { 
     this.location = location; 
     this.minCustPh = minCustPh; 
     this.maxCustPh = maxCustPh; 
     this.averageDpC = averageDpC; 
     this.hoursOpen = hoursOpen; 
     this.donutsPerHourValue = 0; 
     this.getDonutsPH = function() { 
     console.log(this.donutsPerHourValue = (this.location + " needs " + (Math.floor(Math.random() * (this.maxCustPh - this.minCustPh) + this.minCustPh)) * this.averageDpC) + " donuts per hour."); 
    }; 
    this.getDonutsPD = function() { 
    console.log(this.getDonutsPH * this.hoursOpen); 
    }; 
    var Downtown = new donutStore("Downtown",  8, 43, 4.5, 24); 
    var CapitolHill = new donutStore("CapitolHill", 4, 37, 2, 12); 
    var SLU   = new donutStore("SouthLakeUnion", 9, 23, 6.33, 24); 
    var wWood  = new donutStore("WestWood",  2, 28, 1.25, 12); 
    var Ballard  = new donutStore("Ballard",  8, 58, 3.75, 16); 
    var dNutStores = [Downtown, CapitolHill, SLU, wWood, Ballard]; 

    for(i=0; i < dNutStores.length; i ++) 
    { 
     dNutStores[i].getDonutsPH(); 
     dNutStores[i].getDonutsPD(); 
    } 
+0

Btw Извините, все еще пытаясь определить форматирование для stackoverflow – EWPS07

+0

У вас есть другие свойства этого объекта. Какое значение у него есть? Вы можете вставить весь объект здесь? –

+0

Ваша первая функция возвращает 'undefined', которая не является числом; и вы не вызываете функцию (поэтому ничего не может быть возвращено, даже если функция действительно вернула что-то). –

ответ

3

this.getDonutsPH является переменной. В функциях javascript также могут быть переменные.

Для запуска любой функции вам необходимо добавить () к имени функции, например.

this.getDonutsPH() 

Вторая вещь, делает console.log('blah') не возвращает никакого значения, необходимо указать функции возвращать значение

this.getDonutsPH = function() { 
    return this.location + " needs " + (Math.floor(Math.random() * (this.maxCustPh - this.minCustPh) + this.minCustPh)) * this.averageDpC) + " donuts per hour."; 
} 

Обновление: JoshBeam комментарий: -

Я хочу, чтобы указать вне, тоже, этот.getDonutsPH * этот.часовOpen вернет NaN, потому что this.getDonutsPH вернет строку. Умножение строки на число всегда возвращает NaN.

+1

Я хочу также указать, что 'this.getDonutsPH * this.hoursOpen' вернет' NaN', потому что 'this.getDonutsPH' вернет строку. Умножение строки на число всегда будет возвращать 'NaN'. –

+1

@JoshBeam, если строка содержит допустимое число: P, который я знаю, это не в этом случае, но я пытаюсь решить только его вопрос, который был по существу «как мне получить функцию, чтобы что-то вернуть». – Populus

+0

Хорошо, У меня там есть лол. Но это только, если число является единственной вещью в строке; то JavaScript будет принуждать строку к числу, а затем умножать ее или выполнять любую математическую операцию. –

Смежные вопросы