function Cat () {
this.say = function () {
};
this.run = function () {
var speed = countSpeed(s / t, getAngle(0));
function getAngle () {
}
function countSpeed () {
}
};
}
run и say - методы
но метод run использует функции getAngle и countSpeed которые работают с его локальными переменными, где в данном случае удобнее писать эти функции? ВНУТРИ метода? так как только он их использует, но бывают и такие полезные функции которые используют несколько методов, например say захочет использовать getAngle, и в каждом методе писать одно и то же не круто.
Но может сделать эти функции getAngle и countSpeed приватными методами? Но тогда они не будут иметь доступ к локальным переменным каждого метода который их использует и придется передавать эти переменные в качестве параметров?.
Как поступать если например заведомо 100% ТОЛЬКО run использует эти функции? писать их в нем? но это сильно раздувает сам метод и его уже неудобно читать не понятно где начало а где конец. Если же вынести эти функции во вне (не делая приватными _методами, а просто объявить) а они ЗАВЕДОМО используются только ОДНИМ методом (и как бы являются его частью просто вынесенной в отдельную функцию) то не будет ли возникать непонятков "что это ваще тут за функция и какой метод её использует и к какому она относится?" а так же придется передавать в эти функции локальные переменные самих методов которые им нужны.
В общем я остановился пока на раздувании метода этими функциями и объявляю их прямо у него внизу, так как ТОЛЬКО ЭТОТ МЕТОД использует эти функции и они являются как бы его частью (раз используют даже его локальные переменные), ПЛЮС гугл компиллер разворачивает эти функции просто в код который просто использует в методе, что вообще круто. НОО не сильно ли это раздувает метод?
А так же из минусов то что внутри этих функций нет доступа к this по этому приходится вверху любого конструктора писать либо
var self = this
либо выносить все используемые данным методом СВОЙСТВА обьекта в переменные логически названные, и к этим свойствам (через переменные) уже будут иметь доступ функции.
В общем как поступить? И что делать если например и метод say захочет использовать функцию getAngle а у него её нету...