<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>
<channel>
	<title>Comments on: Динамическое создание обработчиков событий</title>
	<atom:link href="http://tmbu.info/create-event-listener-and-handler/feed/" rel="self" type="application/rss+xml" />
	<link>http://tmbu.info/create-event-listener-and-handler/</link>
	<description>TMBU is an ancient Aztec word, which means 'This Might Be Useful'</description>
	<pubDate>Tue, 06 Jan 2009 07:06:23 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: dimzon541</title>
		<link>http://tmbu.info/create-event-listener-and-handler/comment-page-1/#comment-339</link>
		<dc:creator>dimzon541</dc:creator>
		<pubDate>Wed, 21 Mar 2007 16:01:35 +0000</pubDate>
		<guid isPermaLink="false">http://tmbu.info/programming/javascript/create-event-listener-and-handler/#comment-339</guid>
		<description>}}в общем, предлагаю сойтись на том, что eval() надо использовать аккуратно :)

Естественно :) Как любит говорить мой коллега про некоторые "фичи":
Фича "какая-то фича" это острая бритва при прмощи которой при неправильном обращении можно отрезать себе яй#а

}}как я уже говорил в самом начале, все мои претензии к eval() связаны с тем, что я трепетно отношусь к security.

Это и понятно :) Я вот в своё время даже экзамены сдавал http://www.microsoft.com/learning/exams/70-340.mspx</description>
		<content:encoded><![CDATA[<p>}}в общем, предлагаю сойтись на том, что eval() надо использовать аккуратно :)</p>
<p>Естественно :) Как любит говорить мой коллега про некоторые &#8220;фичи&#8221;:<br />
Фича &#8220;какая-то фича&#8221; это острая бритва при прмощи которой при неправильном обращении можно отрезать себе яй#а</p>
<p>}}как я уже говорил в самом начале, все мои претензии к eval() связаны с тем, что я трепетно отношусь к security.</p>
<p>Это и понятно :) Я вот в своё время даже экзамены сдавал <a href="http://www.microsoft.com/learning/exams/70-340.mspx" rel="nofollow">http://www.microsoft.com/learning/exams/70-340.mspx</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Filosoff</title>
		<link>http://tmbu.info/create-event-listener-and-handler/comment-page-1/#comment-338</link>
		<dc:creator>Filosoff</dc:creator>
		<pubDate>Wed, 21 Mar 2007 15:54:03 +0000</pubDate>
		<guid isPermaLink="false">http://tmbu.info/programming/javascript/create-event-listener-and-handler/#comment-338</guid>
		<description>отчасти согласен. но я очень против eval'а полученных данных. это потенциально несекьюрно. конечно, если это только для вывода, тогда ничего. но если потом данные в каком-то виде снова идут на сервер - это нехорошо.
в общем, предлагаю сойтись на том, что eval() надо использовать аккуратно :)

P.S. как я уже говорил в самом начале, все мои претензии к eval() связаны с тем, что я трепетно отношусь к security.</description>
		<content:encoded><![CDATA[<p>отчасти согласен. но я очень против eval&#8217;а полученных данных. это потенциально несекьюрно. конечно, если это только для вывода, тогда ничего. но если потом данные в каком-то виде снова идут на сервер - это нехорошо.<br />
в общем, предлагаю сойтись на том, что eval() надо использовать аккуратно :)</p>
<p>P.S. как я уже говорил в самом начале, все мои претензии к eval() связаны с тем, что я трепетно отношусь к security.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: dimzon541</title>
		<link>http://tmbu.info/create-event-listener-and-handler/comment-page-1/#comment-337</link>
		<dc:creator>dimzon541</dc:creator>
		<pubDate>Wed, 21 Mar 2007 15:48:34 +0000</pubDate>
		<guid isPermaLink="false">http://tmbu.info/programming/javascript/create-event-listener-and-handler/#comment-337</guid>
		<description>Второе решение несколько замедляет ПЕРВЫЙ вызов но ускоряет последующие за счёт того что экономим на IF
Если вызов getSomeValue частый то общая экономия заметна. К тому-же избавляемся от глобальной переменной
Вообще в моей практике я достаточно часто использую eval чтобы генерировать некоторый код (причём бывает достаточно сложный) на лету.
Другое применение eval находит например для обыгрывания пользовательского интерфейса. К примеру есть таблица в которой надо отобразить записи, причём записи получаются с сервера (используем AJAX). Тогда например достаточно изящный способ - в заголовке таблицы доп-аттрибутами у ячейки я указываю выражение на JavaScript для форматирования. Например
[TD formatString="item.FirstName + ' ' + item.LastName + ' ' + item.MiddleName"]ФИО[/TD]
[TD formatString="item.Bithday"]День рождения[/TD]
Тогда при заполнении я использую универсальную функцию
function getTextForCell(item, formatString){return eval(formatString);}</description>
		<content:encoded><![CDATA[<p>Второе решение несколько замедляет ПЕРВЫЙ вызов но ускоряет последующие за счёт того что экономим на IF<br />
Если вызов getSomeValue частый то общая экономия заметна. К тому-же избавляемся от глобальной переменной<br />
Вообще в моей практике я достаточно часто использую eval чтобы генерировать некоторый код (причём бывает достаточно сложный) на лету.<br />
Другое применение eval находит например для обыгрывания пользовательского интерфейса. К примеру есть таблица в которой надо отобразить записи, причём записи получаются с сервера (используем AJAX). Тогда например достаточно изящный способ - в заголовке таблицы доп-аттрибутами у ячейки я указываю выражение на JavaScript для форматирования. Например<br />
[TD formatString="item.FirstName + ' ' + item.LastName + ' ' + item.MiddleName"]ФИО[/TD]<br />
[TD formatString="item.Bithday"]День рождения[/TD]<br />
Тогда при заполнении я использую универсальную функцию<br />
function getTextForCell(item, formatString){return eval(formatString);}</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Filosoff</title>
		<link>http://tmbu.info/create-event-listener-and-handler/comment-page-1/#comment-330</link>
		<dc:creator>Filosoff</dc:creator>
		<pubDate>Wed, 21 Mar 2007 15:21:56 +0000</pubDate>
		<guid isPermaLink="false">http://tmbu.info/programming/javascript/create-event-listener-and-handler/#comment-330</guid>
		<description>вполне возможно. но все равно &lt;code&gt;eval()&lt;/code&gt; вызывает у меня неприязнь. и я не очень понимаю, чем второе решение элегантнее первого. оно несколько более сложно для понимания, как минимум. да и сработает чуть медленнее, по-моему. понятно, что ты просто оверрайднеш функцию сразу после кеширования. но как-то это некрасиво. не стыкуется с моим представлением о культуре программирования :) (ничего личного, если что).</description>
		<content:encoded><![CDATA[<p>вполне возможно. но все равно <code>eval()</code> вызывает у меня неприязнь. и я не очень понимаю, чем второе решение элегантнее первого. оно несколько более сложно для понимания, как минимум. да и сработает чуть медленнее, по-моему. понятно, что ты просто оверрайднеш функцию сразу после кеширования. но как-то это некрасиво. не стыкуется с моим представлением о культуре программирования :) (ничего личного, если что).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: dimzon541</title>
		<link>http://tmbu.info/create-event-listener-and-handler/comment-page-1/#comment-328</link>
		<dc:creator>dimzon541</dc:creator>
		<pubDate>Wed, 21 Mar 2007 15:10:53 +0000</pubDate>
		<guid isPermaLink="false">http://tmbu.info/programming/javascript/create-event-listener-and-handler/#comment-328</guid>
		<description>По поводу eval в JavaScript - если это работает на клиенте то в принципе дырок нет, тем более если ты знаешь что за строчку ты передаешь в eval
На самом деле eval бывает очень полезен. Он, к примеру, используется как основная фича в JSON
Иногда при помощи eval можно сделать очень элегантные вещи. Допустим есть некоторая операция getSomeValue() которая может выполняться долго но результат её выполнения можно "закэшировать".
 
классический способ:
var getSomeValue_Cahce = 0;
function getSomeValue()
{
  if(getSomeValue_Cahce==0)
     getSomeValue_Cahce = getSomeValue_Actual();
  return getSomeValue_Cahce;
}


использование eval()
function getSomeValue()
{ var n=getSomeValue_Actual();
  eval('function getSomeValue(){return ' + n + ';}')
  return n;
}</description>
		<content:encoded><![CDATA[<p>По поводу eval в JavaScript - если это работает на клиенте то в принципе дырок нет, тем более если ты знаешь что за строчку ты передаешь в eval<br />
На самом деле eval бывает очень полезен. Он, к примеру, используется как основная фича в JSON<br />
Иногда при помощи eval можно сделать очень элегантные вещи. Допустим есть некоторая операция getSomeValue() которая может выполняться долго но результат её выполнения можно &#8220;закэшировать&#8221;.</p>
<p>классический способ:<br />
var getSomeValue_Cahce = 0;<br />
function getSomeValue()<br />
{<br />
  if(getSomeValue_Cahce==0)<br />
     getSomeValue_Cahce = getSomeValue_Actual();<br />
  return getSomeValue_Cahce;<br />
}</p>
<p>использование eval()<br />
function getSomeValue()<br />
{ var n=getSomeValue_Actual();<br />
  eval(&#8217;function getSomeValue(){return &#8216; + n + &#8216;;}&#8217;)<br />
  return n;<br />
}</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Filosoff</title>
		<link>http://tmbu.info/create-event-listener-and-handler/comment-page-1/#comment-324</link>
		<dc:creator>Filosoff</dc:creator>
		<pubDate>Wed, 21 Mar 2007 15:00:24 +0000</pubDate>
		<guid isPermaLink="false">http://tmbu.info/programming/javascript/create-event-listener-and-handler/#comment-324</guid>
		<description>сначала по поводу приведенного варианта. он очень занятный. только понял я его со второго раза :). в общем-то, он тоже вполне жизнеспособен.

а про &lt;code&gt;eval()&lt;/code&gt; - это, в общем, большая дырка. изначально это у меня пошло от PHP и Perl, где он медленный и может привести к различным проблемам с security. да и всегда можно обойтись без него.
в JavaScript он, в принципе, также может привести к проблемам. поэтому я не использую его вообще. просто перестраховка.</description>
		<content:encoded><![CDATA[<p>сначала по поводу приведенного варианта. он очень занятный. только понял я его со второго раза :). в общем-то, он тоже вполне жизнеспособен.</p>
<p>а про <code>eval()</code> - это, в общем, большая дырка. изначально это у меня пошло от PHP и Perl, где он медленный и может привести к различным проблемам с security. да и всегда можно обойтись без него.<br />
в JavaScript он, в принципе, также может привести к проблемам. поэтому я не использую его вообще. просто перестраховка.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: dimzon541</title>
		<link>http://tmbu.info/create-event-listener-and-handler/comment-page-1/#comment-320</link>
		<dc:creator>dimzon541</dc:creator>
		<pubDate>Wed, 21 Mar 2007 14:48:00 +0000</pubDate>
		<guid isPermaLink="false">http://tmbu.info/programming/javascript/create-event-listener-and-handler/#comment-320</guid>
		<description>Поясни если не сложно

Кстати, опять-таки если не нравится eval можно использовать такой код

function someFunction1(){alert('someFunction1');}
function someFunction2(){alert('someFunction2');}

var photo_larr_OnClick_PROXY = someFunction1;

function photo_larr_OnClick(){photo_larr_OnClick_PROXY();}

И соответственно когда её надо изменить можно позвать
photo_larr_OnClick_PROXY = someFunction2;</description>
		<content:encoded><![CDATA[<p>Поясни если не сложно</p>
<p>Кстати, опять-таки если не нравится eval можно использовать такой код</p>
<p>function someFunction1(){alert(&#8217;someFunction1&#8242;);}<br />
function someFunction2(){alert(&#8217;someFunction2&#8242;);}</p>
<p>var photo_larr_OnClick_PROXY = someFunction1;</p>
<p>function photo_larr_OnClick(){photo_larr_OnClick_PROXY();}</p>
<p>И соответственно когда её надо изменить можно позвать<br />
photo_larr_OnClick_PROXY = someFunction2;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Filosoff</title>
		<link>http://tmbu.info/create-event-listener-and-handler/comment-page-1/#comment-310</link>
		<dc:creator>Filosoff</dc:creator>
		<pubDate>Wed, 21 Mar 2007 11:18:31 +0000</pubDate>
		<guid isPermaLink="false">http://tmbu.info/programming/javascript/create-event-listener-and-handler/#comment-310</guid>
		<description>я испытываю большую неприязнь к &lt;code&gt;eval()&lt;/code&gt; и стараюсь нигде и никогда его не использовать. если надо, могу пояснить почему.</description>
		<content:encoded><![CDATA[<p>я испытываю большую неприязнь к <code>eval()</code> и стараюсь нигде и никогда его не использовать. если надо, могу пояснить почему.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: dimzon541</title>
		<link>http://tmbu.info/create-event-listener-and-handler/comment-page-1/#comment-309</link>
		<dc:creator>dimzon541</dc:creator>
		<pubDate>Wed, 21 Mar 2007 11:11:50 +0000</pubDate>
		<guid isPermaLink="false">http://tmbu.info/programming/javascript/create-event-listener-and-handler/#comment-309</guid>
		<description>Есть более универсальный способ.
Изначально на этот photo_larr вешается в качетве обработчика функция назовём её  photo_larr_OnClick()

потом когда нужно изменить реакцию делаем
eval('function photo_larr_OnClick(){alert("ПРЕВЕД!");}');

Таким образом мы глобально замещаем одну реализацию другой, причём всё в рамках стандарта javaScript безо всяких там обыгрываний DOM</description>
		<content:encoded><![CDATA[<p>Есть более универсальный способ.<br />
Изначально на этот photo_larr вешается в качетве обработчика функция назовём её  photo_larr_OnClick()</p>
<p>потом когда нужно изменить реакцию делаем<br />
eval(&#8217;function photo_larr_OnClick(){alert(&#8221;ПРЕВЕД!&#8221;);}&#8217;);</p>
<p>Таким образом мы глобально замещаем одну реализацию другой, причём всё в рамках стандарта javaScript безо всяких там обыгрываний DOM</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Filosoff</title>
		<link>http://tmbu.info/create-event-listener-and-handler/comment-page-1/#comment-305</link>
		<dc:creator>Filosoff</dc:creator>
		<pubDate>Wed, 21 Mar 2007 07:49:56 +0000</pubDate>
		<guid isPermaLink="false">http://tmbu.info/programming/javascript/create-event-listener-and-handler/#comment-305</guid>
		<description>я уже несколько раз с этим разбирался. каждый раз успешно забывал, к чему привели разбирательства :). сейчас вот решил, наконец, записать.</description>
		<content:encoded><![CDATA[<p>я уже несколько раз с этим разбирался. каждый раз успешно забывал, к чему привели разбирательства :). сейчас вот решил, наконец, записать.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
