Показать сообщение отдельно
  #4 (permalink)  
Старый 03.12.2014, 09:53
Профессор
Посмотреть профиль Найти все сообщения от krutoy
 
Регистрация: 09.11.2014
Сообщений: 610

Сообщение от ShutTap
Как сделать так, чтобы оно считалось только перый раз, а дальше бралось запомненное? Через глобальную переменную нельзя, так как скрипт может использоваться на нескольких элементах, и у каждого может быть разное соотношение сторон. Каждый раз передавать в функцию? И если передалость что-то, использовать его, а нет - высчитывать и передавать?
В этом случае, обычно, используют замыкания
mkCounter=function(start){return function(callb){start++; return callb(start)}}

counter1=mkCounter(10)
counter2=mkCounter(20)

counter1(function(x){console.log(x)})
counter1(function(x){console.log(x)})
counter1(function(x){console.log(x)})
counter2(function(x){console.log(x)})
counter2(function(x){console.log(x)})
counter2(function(x){console.log(x)})
// ::: 11
// ::: 12
// ::: 13
// ::: 21
// ::: 22
// ::: 23

каждая из ф-ций counter, имеет свое собственное состояние. Можно и объекты использовать для этих целй, разумется.
Counter=function(start){
   this.start=start
}
Counter.prototype.get=function(){return this.start}
Counter.prototype.set=function(){this.start++}

counter1=new Counter(10)
counter2=new Counter(20)

counter1.set()
counter1.set()
counter1.set()
console.log(counter1.get())

counter2.set()
counter2.set()
counter2.set()
console.log(counter2.get())

// ::: 13
// ::: 23

Последний раз редактировалось krutoy, 03.12.2014 в 10:01.
Ответить с цитированием