Показать сообщение отдельно
  #3 (permalink)  
Старый 27.02.2017, 00:00
Аватар для Paguo-86PK
Профессор
Отправить личное сообщение для Paguo-86PK Посмотреть профиль Найти все сообщения от Paguo-86PK
 
Регистрация: 16.09.2009
Сообщений: 253

Сообщение от Rise Посмотреть сообщение
локализуй проблему...
Сил уже нет. Всё перепробовал:
var	BUG	=
function(formula) {
	var	expression	=
		function() {
			return	0;
		},
		adjust		= 7,
		times		= 3;
	function	Bug(n) {
		var no = n;
		while(n > 0) {
			console.log("OUTSIDE: Adjust is " + adjust + ", N is " + n);
			*!*console.log("RESULT is " + expression.bind(self).call());*/!*
			if(no == n) {
				console.log("BUGGEST");
				n --;
			}
			no = n;
		}
		if(-- times > 0)
			setTimeout(this.Bug.bind(self), 2500);
	}
	if(!!formula)
		expression = (new Function("", formula));
	this.Bug	= Bug;
	return	this;
};

var	Bugs = new BUG(
"	console.log(\"INSIDER...\");\
	console.log(\"INSIDE: Adjust is \" + this.adjust);\
	console.log(\"INSIDE: N is \" + this.n);\
	try {\
		console.log(\"INSIDE: Adjust is \" + adjust);\
	} catch(e) {\
		console.log(\"INSIDE: Adjust is ???\");\
	}\
	try {\
		console.log(\"INSIDE: N is \" + n);\
	} catch(e) {\
		console.log(\"INSIDE: N is ???\");\
	}\
	try {\
		console.log(\"return n -- * adjust\");\
		return	n -- * adjust;\
	} catch(e) {\
	}\
	try {\
		console.log(\"return this.n -- * this.adjust\");\
		return	this.n -- * this.adjust;\
	} catch(e) {\
		console.log(\"Total Error...\");\
	}\
	return	0;"
	);

alert(Bugs.Bug(3));


P.S.: Проблема в том, что из-под eval всё работает и все переменные доступны и обновляемы.
А вот красиво обвернув в функцию никак не получается…
Выше я обновил пример - пишу эмулятор. И он пока весь держится на eval… Хотелось бы иначе

Спасибо!

Последний раз редактировалось Paguo-86PK, 02.03.2017 в 00:24.
Ответить с цитированием