Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 02.09.2014, 18:17
Интересующийся
Отправить личное сообщение для vvkk Посмотреть профиль Найти все сообщения от vvkk
 
Регистрация: 20.08.2014
Сообщений: 28

В скрипте есть переменные. Именно переменные а не свойства обекта Window. Как узнать какие есть переменные в скрипте?

Мне не нужны значения этих переменных, мне нужно узнать существание таких переменных в скрипте. Причем здесь скоп вообще если я незнаю названия переменых даже, да и получать значения этих переменных мне не нужно.

Да я понимаю что так проверяються typeof someVar !== 'undefined'; на существование но мне нужно название самой переменной. Как мне ее получить? Брутфорс не вариант.
Ответить с цитированием
  #12 (permalink)  
Старый 02.09.2014, 18:25
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,492

См. выше. Есть ещё вариант анализа строкового представления функции.( arguments.callee.toString() ). Только вот учесть все ситуации будет не просто(возможно это чуток упростит задачу).
И всё равно - то что вы делаете бред. Опишите реальную задачу, и вам предложат нормальный вариант её решения.
__________________
29375, 35

Последний раз редактировалось Aetae, 02.09.2014 в 18:29.
Ответить с цитированием
  #13 (permalink)  
Старый 02.09.2014, 18:38
Интересующийся
Отправить личное сообщение для vvkk Посмотреть профиль Найти все сообщения от vvkk
 
Регистрация: 20.08.2014
Сообщений: 28

Мне интересен именно этот контект решения задачи. Если его расширить то понятное дело появляються другие варианты к чему зацепиться и по другому все сделать. Необходимо решить задачу именно в этом контексте.

arguments.callee.toString() также исключено так переменные могут находиться вне функции но как я уже говорил они не являються свойствами обекта window.
Ответить с цитированием
  #14 (permalink)  
Старый 02.09.2014, 18:48
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,492

В глобале они не могут не быть свойством window:
var a = 1;
alert(window.a)
(за исключениме случая strict но там и arguments.callee работать не будет).

Если же функция не первая в цепочке - можно до победного использовать arguments.callee.caller.
__________________
29375, 35
Ответить с цитированием
  #15 (permalink)  
Старый 08.09.2014, 15:42
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,127

Сообщение от Aetae
Только вот учесть все ситуации будет не просто
гарантированно невозможно;
<!Doctype html>
<html>
<head>
    <meta charset="utf-8">
</head>
<body>
<input type="button" onclick="alert ( fun())" value="кнопка"/>
<script type="text/javascript">
function fun(){
    function r(x){return Math.floor((Math.random()*x))}
	var str = "";
	for (i=0 ;i < r(2000);i++ ){ str?str+=",":0;
        for (ii=0;ii < r(100);ii++){
            str += "QWERTYUIOPASDFGHJKL"[r(19)];}}
    var arr=str.split(",");
    str="";
    for (i=0;i<arr.length;i++){
        str += "var "+arr[i]+"="+i+";   ";
    }
	return str;
}	
</script>
</body>
</html>

Последний раз редактировалось MallSerg, 08.09.2014 в 15:48.
Ответить с цитированием
  #16 (permalink)  
Старый 08.09.2014, 16:08
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

давайте попробуем ответить на простой вопрос, сколько здесь переменных?
<html>
<html>
<head>
</head>
<body>
	<script>
var x = 1;
function one () {
	var x = 2;
	console.log(x);
}
function two () {
	var x = 3;
	console.log(x);
}
one();
two()
console.log(x);
	</script>
</body>
</html>
Ответить с цитированием
  #17 (permalink)  
Старый 08.09.2014, 16:43
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,492

MallSerg, строки просто вырезать(смотри ссылку на функцию kobezzza ), eval - обработать особо.

skrudjmakdak, всё это можно учесть в парсере: вырезать вложенные функции, учесть надстоящие...)

И вообще, всё это - возможно. В крайнем случае можно бинарно распарсить js движком js портированым на asm.js.
__________________
29375, 35

Последний раз редактировалось Aetae, 08.09.2014 в 16:46.
Ответить с цитированием
  #18 (permalink)  
Старый 08.09.2014, 16:48
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

Aetae,
ладно, если можно. стоит ли оно того времени и сил? и вообще зачем все это?
Ответить с цитированием
  #19 (permalink)  
Старый 08.09.2014, 17:04
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,127

Сообщение от MallSerg
гарантированно невозможно;
т.е. Гарантированно возможно - при наличии астрономических вычислительных ресурсах и пары трилионов лет но имхо это называется невозможно.

Пришло в голову что было бы неплохо если бы в JS была возможность перегрузки оператора var
Ответить с цитированием
  #20 (permalink)  
Старый 08.09.2014, 18:10
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,492

MallSerg, ты преувеличиваешь. Нормально будет работать, даж без особых лагов. Asm.js потому и называется asm что обеспечивает достаточную скорость.)

skrudjmakdak, конечно нет. Это лютый бред, но мир полон бреда: одним больше - одним меньше.)
__________________
29375, 35

Последний раз редактировалось Aetae, 08.09.2014 в 18:14.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Индивидуальные переменные в each Spamol jQuery 6 08.12.2012 14:34
Ссылки в скрипте Cloud Zoom onuvidelsolnce Events/DOM/Window 1 25.04.2012 19:24
Сеансовые переменные faiq Серверные языки и технологии 2 24.07.2011 10:32
Сессионные переменные в подгружаемом скрипте AlexJ AJAX и COMET 1 21.06.2011 10:34
Нужно сравнить дробные переменные netkent Общие вопросы Javascript 1 05.12.2010 18:30