Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.11.2010, 18:53
Новичок на форуме
Отправить личное сообщение для palesika2002 Посмотреть профиль Найти все сообщения от palesika2002
 
Регистрация: 09.07.2010
Сообщений: 6

Проблема с объектом javasript
В общем такой вопрос: Есть объект в котором объявлен метод. Необходимо внутри объекта объявить событие которое запустит этот метод. Через глобальную переменную не подходит. Смотреть пример:
function Test(){
         var a = 8;
         var b = 15;
         this.method = function() {
          alert(a+b);
         }

          //собственно вопрос
         window.onresize = function(){this.method();}
      }

var a = new test();


говорят можно как то перед
Ответить с цитированием
  #2 (permalink)  
Старый 11.11.2010, 19:20
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Кешируйте this в локальную переменную.
Ответить с цитированием
  #3 (permalink)  
Старый 11.11.2010, 20:17
Новичок на форуме
Отправить личное сообщение для palesika2002 Посмотреть профиль Найти все сообщения от palesika2002
 
Регистрация: 09.07.2010
Сообщений: 6

не совсем понял типа
window.onresize = function(){a.method();}
Ответить с цитированием
  #4 (permalink)  
Старый 11.11.2010, 20:23
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Да, а строчкой ранее
var a = this;
И не a, а какое-нибудь другое, не занятое имя.
Ответить с цитированием
  #5 (permalink)  
Старый 11.11.2010, 20:34
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

а если так?
function test(){
         var a = 8;
         var b = 15;
         this.method = function() {
          alert(a+b);
         }


         window.onresize = this.method;
      }
var a = new test();
Ответить с цитированием
  #6 (permalink)  
Старый 11.11.2010, 21:28
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

http://javascript.ru/tutorial/object/thiskeyword
Ответить с цитированием
  #7 (permalink)  
Старый 12.11.2010, 11:28
Новичок на форуме
Отправить личное сообщение для palesika2002 Посмотреть профиль Найти все сообщения от palesika2002
 
Регистрация: 09.07.2010
Сообщений: 6

Сообщение от рони Посмотреть сообщение
а если так?
function test(){
         var a = 8;
         var b = 15;
         this.method = function() {
          alert(a+b);
         }


         window.onresize = this.method;
      }
var a = new test();
Так не работает. this не попадает в область видимости.
Ответить с цитированием
  #8 (permalink)  
Старый 12.11.2010, 11:30
Новичок на форуме
Отправить личное сообщение для palesika2002 Посмотреть профиль Найти все сообщения от palesika2002
 
Регистрация: 09.07.2010
Сообщений: 6

Сообщение от B@rmaley.e><e Посмотреть сообщение
Да, а строчкой ранее
var a = this;
И не a, а какое-нибудь другое, не занятое имя.

Получается мы объявим переменную глобально. НЕ хотелось. Хочется чтоб все было внутри объекта, ведь на то оно и есть ООП.
Ответить с цитированием
  #9 (permalink)  
Старый 12.11.2010, 11:45
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от palesika2002 Посмотреть сообщение
Сообщение от B@rmaley.e><e Посмотреть сообщение
Да, а строчкой ранее
var a = this;
И не a, а какое-нибудь другое, не занятое имя.
Получается мы объявим переменную глобально. НЕ хотелось. Хочется чтоб все было внутри объекта, ведь на то оно и есть ООП.
Не пиши тупость.
в данном коде создается замыкание, при помощи ЛОКАЛЬНОЙ переменной.
это, кстати очень даже правильное решение в контексте данного языка
http://javascript.ru/basic/functions#oblasti-vidimosti
http://javascript.ru/basic/closure
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема с JSON объектом в AJAX запросе jura4x01 jQuery 6 01.12.2010 15:40
Проблема с дизайном после отправки xmlhttprequest, Проблема с дизайном после отправки cyberx AJAX и COMET 3 01.05.2010 17:07
Проблема с объектом Location KingKong Элементы интерфейса 8 24.10.2009 02:34
Проблема, в менюшке Большой джо Элементы интерфейса 0 12.07.2009 17:12
Проблема спама lliberty AJAX и COMET 1 12.03.2009 16:47