Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.05.2012, 17:47
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Динамическое создание функции
Пардон, туплю немного. Как создать динамическую функцию? Что я имею в виду:
Обычно функция из конструктора создаётся так:
new Function( 'a', 'b', 'return a+b' );

Нужно следующее:
['a','b','c','d','e', 'dosomething()']

Имея этот массив, нужно получить:
new Function( 'a','b','c','d','e', 'dosomething()' );

Или просто:
function( a, b, c, d, e ){ dosomething() }

Знаю, что нужно что-то сделать с apply или bind, но не знаю, что. Заранее благодарю.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #2 (permalink)  
Старый 18.05.2012, 17:50
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Получилось, но выглядит не очень:
alert( new ( Function.bind.apply( Function, [ null, 'a','b','c','d','e', 'dosomething()' ] ) ) );
Буду рад более адекватным вариантам.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности

Последний раз редактировалось FINoM, 18.05.2012 в 17:53.
Ответить с цитированием
  #3 (permalink)  
Старый 18.05.2012, 18:10
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Мдэ, я молодец.
Maxmaxmахimus, спасибо.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #4 (permalink)  
Старый 18.05.2012, 18:56
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Когда-то кто-то спрашивал, как сэмулировать оператор with:
function withEmu( object, f ) {
	var argumentNamesArray = [],
		argumentValuesArray = [],
		newF;                        
		for( var arg in object ) {
			argumentNamesArray.push( arg );
			argumentValuesArray.push( object[ arg ] );
			}
		argumentNamesArray.push( 'return (' + f + ')()' );
		newF = Function.apply( null, argumentNamesArray );
		return newF.apply( null, argumentValuesArray );
}

var x = withEmu( {a:1, b:2, c: 'blah'}, function() {
    return [a,b,c];
});

alert( x );
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #5 (permalink)  
Старый 18.05.2012, 19:50
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 12.04.2011
Сообщений: 1,180

Хм...я правильно понимаю, что такое, например:
<div id='div'>123</div>
<script>
with(document.getElementById('div')) {
alert(innerHTML)
}
</script>

Твоя ф-ия сделать не сможет?
__________________
оляля, ололо
Ответить с цитированием
  #6 (permalink)  
Старый 18.05.2012, 19:56
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Ну почему же?
function withEmu( object, f ) {
	var argumentNamesArray = [],
		argumentValuesArray = [],
		newF;                        
		for( var arg in object ) {
			argumentNamesArray.push( arg );
			argumentValuesArray.push( object[ arg ] );
			}
		argumentNamesArray.push( 'return (' + f + ')()' );
		newF = Function.apply( null, argumentNamesArray );
		return newF.apply( null, argumentValuesArray );
}
var div = document.createElement('div');
div.innerHTML = 'valera'
var x = withEmu( div, function() {
    return innerHTML;
});

alert( x );


Только сеттер не будет срабатывать (innerHTML = 'valuev' → див не изменится)
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #7 (permalink)  
Старый 18.05.2012, 20:05
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 12.04.2011
Сообщений: 1,180

FINoM,
да точно, в js же все объекты...(хотя где-то здесь есть холивар на эту тему)
=======
Про то, что не измениться знаю, сам как-то сталкивался, сидел, не мог понять, что не так.
__________________
оляля, ололо
Ответить с цитированием
  #8 (permalink)  
Старый 18.05.2012, 21:08
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 12.04.2011
Сообщений: 1,180

Maxmaxmахimus,
щас уже не найду, я тогда еще даже не понимал, что такое объекты, и чем они отличаются
__________________
оляля, ололо
Ответить с цитированием
  #9 (permalink)  
Старый 18.05.2012, 21:22
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Сообщение от Maxmaxmахimus
БЛИН!!!! ВЫОХДИ ЗА МЕНЯ!!!!!!!!!!!!!!!!!!!!!!!
Не испытываю желания.
А зачем тебе эта функция, если не секрет?
(по реакции кажется, что она тебе очень нужна была)
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #10 (permalink)  
Старый 18.05.2012, 22:12
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Ничего не понял, но был рад помочь
А изолировать песочницу можно и фреймом, наверно.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как предотвратить повторное создание функции kichSman jQuery 3 06.09.2011 13:49
динамическое содержимое функции alfmaster Общие вопросы Javascript 2 28.05.2011 17:10
Динамическое создание таблицы Arfey Общие вопросы Javascript 7 10.06.2010 14:14
Динамическое создание Iframe Арсений Элементы интерфейса 12 19.05.2010 15:03
Динамическое создание елемента из динамически созданного элемента. Anguis Элементы интерфейса 10 16.12.2009 17:26