<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Javascript. Область видимости</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8630.html</link>
    <description>Не мог бы кто-нибудь ответить на такой вопрос&lt;br&gt;&lt;br&gt;Допустим, есть класс a&lt;br&gt;&lt;br&gt;function a(b,id) &#123;&lt;br&gt;    this.b = b // в нём переменная b&lt;br&gt;    this.element = document.getElementById(id) // и DOM элемент&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;Хочется, повесив на this.element обработчик события, &quot;увидеть&quot; this.b&lt;br&gt;&lt;br&gt;a.prototype.eventHandler = function(e) &#123;&lt;br&gt;   alert(this.b)&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;Делаю так:&lt;br&gt;&lt;br&gt;aa = new a (1,&apos;i&apos;)&lt;br&gt;aa.element.addEventListener(&apos;DOMMouseWheel&apos;,aa.eventHandler,false)&lt;br&gt;&lt;br&gt;Несмотря на то, что eventHandler вызывается как метод экземпляра aa,&lt;br&gt;this внутри функции eventHandler указывет не на aa, a на элемент aa.element.&lt;br&gt;&lt;br&gt;Как обратится из обработчика события к переменной экцемпляра класса this.b ?&lt;br&gt;</description>

<item>
    <title>Javascript. Область видимости (anonymous)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8630.html#2</link>
    <pubDate>Tue, 23 Feb 2010 20:27:31 GMT</pubDate>
    <description>О, великий шаман!&lt;br&gt;Когда я посмотрел на предложенное вами решение, я подумал, что ни за что оно не будет работать. Для очистки совести всё же решил попробовать и увидел, что ошибался.&lt;br&gt;Спасибо! Это просто и изящно.&lt;br&gt;&lt;br&gt;А мне пришлось привязывать события к объектам через функцию regObjEventHandler.&lt;br&gt;Оказывается, если так делать, то this указывает на объект, а не на элемент внутри него.&lt;br&gt;Как-то так:&lt;br&gt;&lt;br&gt;function regObjEventHandler ( element,eventtype,listener,captures ) &#123;&lt;br&gt;   element.addEventListener ( eventtype,&lt;br&gt;                              function(event) &#123; listener.handleEvent(event); &#125;,&lt;br&gt;                              captures )&lt;br&gt;&#125;&lt;br&gt;regObjEventHandler(aa.element,&apos;DOMMouseScroll&apos;,aa,false)&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Javascript. Область видимости (unk)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8630.html#1</link>
    <pubDate>Tue, 23 Feb 2010 14:07:20 GMT</pubDate>
    <description>попробуйте так&lt;br&gt;&lt;br&gt;&amp;gt;function a(b,id) &#123; &lt;br&gt;&lt;br&gt;     self = this;&lt;br&gt;&amp;gt;    this.b = b // в нём переменная b &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;    this.element = document.getElementById(id) // и DOM элемент &lt;br&gt;&amp;gt;&#125;&lt;br&gt;&amp;gt;a.prototype.eventHandler = function(e) &#123; &lt;br&gt;&lt;br&gt;   alert(self.b) &lt;br&gt;&amp;gt;&#125;</description>
</item>

</channel>
</rss>
