Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   как сделать грамотно? (https://javascript.ru/forum/project/10030-kak-sdelat-gramotno.html)

Gozar 20.06.2010 14:40

B~Vladi,
Не делайте из мухи СЛОНА. Я прекрасно понимаю что вы говорите о расширяемости. Однако здесь речь идет не об этом.
Цитата:

Сообщение от _mad (Сообщение 59721)
Как избавиться от глобальной переменной?

Вы не будете со мной работать, мы находимся в разных городах и возможно мирах, так что беспокоиться вам не о чём ;)

B~Vladi 20.06.2010 15:46

Цитата:

Сообщение от Gozar
Не делайте из мухи СЛОНА.

Вопрос был как ГРАМОТНО сделать. Вот я и отстаиваю свой подход.
Цитата:

Сообщение от Gozar
Вы не будете со мной работать

Я не про кого-то конкретного говорю.

Gozar 20.06.2010 16:01

Цитата:

Сообщение от B~Vladi (Сообщение 60254)
Вопрос был как ГРАМОТНО сделать. Вот я и отстаиваю свой подход.

И что в предложенном мной не грамотного, кроме рук самого программиста? язык позволяет так делать, подход нагляден и понятен даже новичку.

subzey 20.06.2010 18:10

Я обычно делаю так:
<button onclick="run()">run()</button>
<script type="text/javascript">
function run(){
	if (!arguments.callee.runTimes) arguments.callee.runTimes = 0;
	if (++arguments.callee.runTimes > 3){
		alert("Эту функцию можно вызвать только три раза!");
		return;
	};
	/* далее — обычный код функции */
	alert("Я сработало!")
}
</script>

Ну, учитывая, что arguments.callee — это ссылка на функцию, которая сейчас выполняется.

Kolyaj 20.06.2010 20:51

Как аргумент против свойств функции: они не сожмутся обфускатором. Но это не для всех аргумент :)

рони 21.06.2010 00:33

subzey,
может так ?
if (++arguments.callee.runTimes < 4){

alert("Эту функцию можно вызвать только три раза!");

return;

};
или
if (arguments.callee.runTimes++ < 3){
alert("Эту функцию можно вызвать только три раза!");
return;
};

subzey 21.06.2010 13:03

рони,
«Эту функцию первые три раза запускать нельзя»? :)

рони 21.06.2010 17:23

subzey,
ок понял


Часовой пояс GMT +3, время: 02:52.