Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.01.2012, 18:08
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

Пожалуйста напишите регулярку!!
напишите регулярку чтобы возвращала Тело функции!

из "function(){alert('fff')}"

и из "function бла(){ alert('fff') }"

или как можно получить тело функции в виде текста?

например q = function (){ alert('ля ля') }

var funcBody = q.toStrong() //возвращает не только тело, а строку "function (){ alert('ля ля') }" целиком
как вернуть чисто тело "alert('ля ля')" ))?

Последний раз редактировалось Livaanderiamarum, 06.01.2012 в 18:19.
Ответить с цитированием
  #2 (permalink)  
Старый 06.01.2012, 18:25
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от Livaanderiamarum
toStrong()
.toString();


alert(function () {return 0;}.toString().replace(/\s+/g, ' ').match(/function.*{(.*)}/)[1]);
Ответить с цитированием
  #3 (permalink)  
Старый 06.01.2012, 18:32
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

СПАСИБО ОГРОМНОЕ)!! Я реально не могу понять как регулярки работают, я уже статей 15 перечитал и справочников(
Ответить с цитированием
  #4 (permalink)  
Старый 06.01.2012, 18:40
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

Сообщение от monolithed Посмотреть сообщение
.toString();


alert(function () {return 0;}.toString().replace(/\s+/g, ' ').match(/function.*{(.*)}/)[1]);
Подскажи лучше как из строки собрать функциональное выражение через конструктор Function() при том что у этого выражения ЕСТЬ ИМЯ?

например
var q = (function NNNNN (){}).toString().replace(/\s+/g, ' ').match(/function.*{(.*)}/)[1]
q это строка с телом функции

var func = Function(q)

так вот у func имя NNNNN не сохранится((
иными словам функция не будет доступна внутри самой себя через имя NNNNN


можно ли как то в конструктор Function() передавать не только тело функции а еще и её имя?
Ответить с цитированием
  #5 (permalink)  
Старый 06.01.2012, 18:48
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

хорошо, как после создания безымянной функции поменять её внутренее имя?

var q = function (){
	alert(t.name)
}
q.name = 't'
q() // t не определено
Ответить с цитированием
  #6 (permalink)  
Старый 06.01.2012, 19:03
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от Livaanderiamarum
как после создания безымянной функции поменять её внутренее имя
Свойство name доступно только для чтения, добиться его заполнения можно только при помощи function declaration и named function expression.


Сообщение от Livaanderiamarum
например
var q = (function NNNNN (){})…

так вот у func имя NNNNN не сохранится((
Вообще то сохранится
(function NNNNN (){ alert(arguments.callee.name) })()

(function NNNNN (){ alert(NNNNN.name) })()

alert((function NNNNN (){}).toString())

но в IE есть баги http://dmitrysoshnikov.com/ecmascrip...#nfe-i-jscript
Ответить с цитированием
  #7 (permalink)  
Старый 06.01.2012, 19:11
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от Livaanderiamarum
Подскажи лучше как из строки собрать функциональное выражение через конструктор Function() при том что у этого выражения ЕСТЬ ИМЯ?
var fn = function () { 
    return 'foo'; 
};

var source = fn.toString().replace(/\s+/g, ' ').match(/function.*{(.*)}/)[1];

alert(Function(source)());

Для чего этот бред нужен?

Сообщение от Livaanderiamarum
// t не определено
подумайте почему
Ответить с цитированием
  #8 (permalink)  
Старый 06.01.2012, 19:16
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

Сообщение от monolithed Посмотреть сообщение
подумайте почему
я знаю почему)) я и показал что извне не получается), только при создании.

В том то и суть что через аргументс.кали обращаться не хочется, вдруг в функции написано обращение не через кали а через именно ИМЯ.


_____________
бред этот нужен для корвертации фукций в строку и обратно БЕЗ ПОТЕРЬ.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста написать кодик глупой блондинке:cray: Ирка Общие вопросы Javascript 20 15.11.2011 01:24
Подскажите регулярку LRCenter Общие вопросы Javascript 5 22.06.2011 15:04
Помогите пожалуйста я новичок! NemzevDanil Общие вопросы Javascript 3 02.02.2011 19:23
Помогите пожалуйста я новичок! NemzevDanil Элементы интерфейса 0 02.02.2011 00:00
Объясните пожалуйста значение символов после переменной Анатолий Общие вопросы Javascript 1 09.01.2009 03:50