Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 18.05.2012, 22:27
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

FINoM, как работает функция? я то представляю, но хочу, чтобы создатель ф-и пояснил
Ответить с цитированием
  #12 (permalink)  
Старый 18.05.2012, 22:29
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Чужой произвольный код изолировать без ифрейма не получится.
Ответить с цитированием
  #13 (permalink)  
Старый 18.05.2012, 22:36
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Лень объяснять, лучше посмотри, как меняются переменные
function withEmu( object, f ) {
	var argumentNamesArray = [], // массив имен
	argumentValuesArray = [], // массив значений
	newF;                        
	for( var arg in object ) {
		argumentNamesArray.push( arg ); // "a", "b", "c"
		argumentValuesArray.push( object[ arg ] ); // "1",  "2", "blah"
	}
	argumentNamesArray.push( 'return (' + f + ')()' ); // "a", "b", "c", "return (function() {return [a,b,c];})()"
	newF = Function.apply( null, argumentNamesArray ); // то же самое, что и 
	//Function("a", "b", "c", "return (function() {return [a,b,c];})()") или
	//function(a,b,c){ return (function() {return [a,b,c];})() }
	return newF.apply( null, argumentValuesArray ); // вызываем её с аргументами "1",  "2", "blah"
}

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

alert( x );
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #14 (permalink)  
Старый 18.05.2012, 22:40
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Maxmaxmахimus,
я ничего не понял из того, что ты написал
Как запретить коду в песочнице обращаться к window?
Ответить с цитированием
  #15 (permalink)  
Старый 19.05.2012, 09:21
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

var win = window;
with ({window: null}) {
    alert(win == window);
}
Да, перекрывается, но достучаться можно
var win = window;
with ({window: null, Function: null}) {
    new [].constructor.constructor('win', 'alert([this == win, window == win])')(win);
}
Ответить с цитированием
  #16 (permalink)  
Старый 19.05.2012, 15:15
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Maxmaxmахimus
нельзя, так как в оператор with передаетя проки, если у которого запросить что то через гет, то если возвращается обоект, то он оборачивает его в такое же прокси, если приметив, то оставляет. если гетится функция то она биндится к ну ты понял к чему), и естественно тоже оборачивается в проксиФанкшен.
Можно не рассуждения, а пример кода?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как предотвратить повторное создание функции 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