powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Проблема с this
13 сообщений из 13, страница 1 из 1
Проблема с this
    #35976780
MaxPayne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
function mainFunction () {
this.el = 0;
this.elarray = [ { a:11, b:22, c:0 }, { a:111, b:222, c:1 }]
var element = this.elarray [this.el];
}

Как мне в другой функции найти и вывести этот элемент?
Пробовал так:

function function1 (event) {
alert(this.city)
}

Не получается.
...
Рейтинг: 0 / 0
Проблема с this
    #35976784
MaxPayne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пробовал так:

function function1 (event) {
alert(this.el)
}

Не получается.
...
Рейтинг: 0 / 0
Проблема с this
    #35976797
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
function test(){
 var mf=new mainFunction ();
 alert(mf.el);
 alert(mf.elarray[mf.el]);
}
...
Рейтинг: 0 / 0
Проблема с this
    #35977070
RAndrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При обработке событий контекст меняется, this указывает на другой объект, а не на функцию. Проще всего замкнуть нужный вам параметр при создании обработчика. То есть

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
function mainFunction () {
  this.el =  0 ;
  this.elarray = [ { a: 11 , b: 22 , c: 0  }, { a: 111 , b: 222 , c: 1  }]
  var element = this.elarray [this.el];
  function function1 () {
    that = this;
    return function(event){
      alert(that.el);
    }
  }
}

document...onclick = mainFunction.function1();

Но это плохо, лучше замыкать как можно меньшие объекты, что бы проще было следить за ситуациями, когда память начнет течь. То есть.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
function mainFunction () {
  this.el =  0 ;
  this.elarray = [ { a: 11 , b: 22 , c: 0  }, { a: 111 , b: 222 , c: 1  }]
  var element = this.elarray [this.el];
  function function1 (el) {
    return function(event){
      alert(el);
    }
  }
}

document...onclick = mainFunction.function1(mainFunction.el);

Или el будет меняться после задания обработчика? Если да, то придется замыкать по первому варианту.
...
Рейтинг: 0 / 0
Проблема с this
    #35977409
MaxPayne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
RAndrew, да, причем может многократно меняться за один сеанс работы с Web-приложением. Вот именно утечки памяти и опасаюсь..

ShSerge, к сожалению, Ваш вариант не работает.
...
Рейтинг: 0 / 0
Проблема с this
    #35977417
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RAndrew,

1) mainFunction.function1() функция не доступна из объекта
2) var забыл
3) если так хочется пожадничать, то заверни только то что надо, звать метод которому предается свойство того же объекта - как-то совсем неправильно
Код: plaintext
1.
2.
3.
4.
5.
  function function1 () {
    var el = this.el;
    return function(event){
      alert(el);
    }
  }
...
Рейтинг: 0 / 0
Проблема с this
    #35977472
MaxPayne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А может реализовать эту функцию как prototype? Тогда и обращаться можно будет через this
...
Рейтинг: 0 / 0
Проблема с this
    #35977506
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxPayneА может реализовать эту функцию как prototype? Тогда и обращаться можно будет через this
а я не знаю что он так намудрил, наверное ему это было зачем-то нужно :)
...
Рейтинг: 0 / 0
Проблема с this
    #35977510
MaxPayne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
зы, просто я и спрашиваю, как лучше сделать. Но если реализовывать через prototype - будет ли возможность включить собственный обработчик событий?
...
Рейтинг: 0 / 0
Проблема с this
    #35977534
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не совсем понятно, что надо получить? - Чтобы уметь вызывать методы/свойства другой функции? Или хочется создать метод-инициализатор, в котором собрать общедоступные свойства? - Первое нельзя без передачи экземпляра (ссылки), второе - не видно смысла, так как свойства можно просто вынести в зону общей видимости.
...
Рейтинг: 0 / 0
Проблема с this
    #35977888
RAndrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зыRAndrew,

1) mainFunction.function1() функция не доступна из объекта


Хух? Из какого объекта?
...
Рейтинг: 0 / 0
Проблема с this
    #35977890
RAndrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxPayneRAndrew, да, причем может многократно меняться за один сеанс работы с Web-приложением. Вот именно утечки памяти и опасаюсь..


Если это весь код работы с этим объектом, то ничего не потечет, если при задании обработчика замкнуть сразу this, он, на сколько я понял, не меняется, меняется только его содержимое. Единственное, что если будет создаваться новый объект и не раз ... = new mainFunction (), то и обработчик надо будет переопределять, либо удалять из очереди обработчиков.
...
Рейтинг: 0 / 0
Проблема с this
    #35978074
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RAndrewзыRAndrew,

1) mainFunction.function1() функция не доступна из объекта


Хух? Из какого объекта?
из mainFunction она не доступна, орел, в том виде как ты написал
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Проблема с this
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]