Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.09.2013, 17:12
Аспирант
Отправить личное сообщение для HJ90 Посмотреть профиль Найти все сообщения от HJ90
 
Регистрация: 24.07.2012
Сообщений: 37

Как выполнить метод в виде переменной
Здравствуйте!
Подскажите пожалуйста, как можно выполнить вот такое?
Здесь у меня undefined:
val = 'HeLLo WOrld';
exp = "replace(/s*/g,'-')"
alert(val[exp])


В плагине пользователь передает текст и шаблон поиска в JS и получает результат.
То есть нужно сложить конструкцию из двух переменных: text + method
статический вариант такой:
val = 'HeLLo WOrld';
rusult = val.replace(/s*/g,'-')
alert(rusult)

Перечитал много документации, но никак не получается...
А вот если с именем функции - получается.
Спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 16.09.2013, 17:27
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

eval('val.' + exp);
Ответить с цитированием
  #3 (permalink)  
Старый 16.09.2013, 17:41
Аспирант
Отправить личное сообщение для HJ90 Посмотреть профиль Найти все сообщения от HJ90
 
Регистрация: 24.07.2012
Сообщений: 37

Сообщение от Ruslan_xDD Посмотреть сообщение
eval('val.' + exp);
Спасибо Ruslan_xDD!
А есть возможность обойтись без eval?
Ответить с цитированием
  #4 (permalink)  
Старый 16.09.2013, 17:42
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

Сообщение от HJ90
А есть возможность обойтись без eval?
в данной постановке вопроса - нет.
вот если юзер будет присылать только регекс (и строку для замены), то легко.
Ответить с цитированием
  #5 (permalink)  
Старый 16.09.2013, 17:48
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

HJ90, есть, можно так.

var val = 'HeLLo WOrld';
var ex = "replace(/s*/g,'-')";

var test = new Function('return val.' + ex + ';');
alert( test() );
Ответить с цитированием
  #6 (permalink)  
Старый 16.09.2013, 17:57
Аспирант
Отправить личное сообщение для HJ90 Посмотреть профиль Найти все сообщения от HJ90
 
Регистрация: 24.07.2012
Сообщений: 37

Сообщение от Ruslan_xDD Посмотреть сообщение
HJ90, есть, можно так.
О, то что надо!
Ruslan_xDD, большое Вам спасибо!!
Ответить с цитированием
  #7 (permalink)  
Старый 16.09.2013, 17:58
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

Сообщение от Ruslan_xDD
new Function
оное выполняется "в глобальном контексте", переменные внутри scope не видит.
можно так:
var val = 'HeLLo WOrld';
var ex = "replace(/s*/g,'-')";
 
var _test = new Function('val,ex', 'return val.' + ex + ';');
var test = function() { return _test(val,ex); };
alert( test() );
Ответить с цитированием
  #8 (permalink)  
Старый 16.09.2013, 18:00
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Яростный Меч, странно, только что тестил - всё работает.
Ответить с цитированием
  #9 (permalink)  
Старый 16.09.2013, 18:26
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

Сообщение от Ruslan_xDD
только что тестил - всё работает.
http://jsfiddle.net/jWhJJ/ и http://jsfiddle.net/Supa2/ - найди отличие
Ответить с цитированием
  #10 (permalink)  
Старый 16.09.2013, 22:27
Аспирант
Отправить личное сообщение для HJ90 Посмотреть профиль Найти все сообщения от HJ90
 
Регистрация: 24.07.2012
Сообщений: 37

А как понимать такую запись "Function" ?
Первый раз такое вижу...

аа, блин ..все ок

Последний раз редактировалось HJ90, 16.09.2013 в 22:29.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Значение переменной, как имя для другой переменной Kosty@n Общие вопросы Javascript 2 15.12.2012 22:58
Выполнить строку как код JS OlegC Общие вопросы Javascript 2 13.09.2012 18:52
Как обратиться к переменной внутри объекта, в произвольной функцию через его метод platedz Элементы интерфейса 15 25.08.2012 00:03
Как обратиться к свойству объекта по имени если оно хранится в переменной xaknik Общие вопросы Javascript 2 25.04.2012 23:12
Как получить значение переменной из callback функции? Хиросим AJAX и COMET 5 24.04.2012 09:32