Сообщение от 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