Объект Java-скрипта - получить имя переменной - PullRequest
2 голосов
/ 26 марта 2010

Начнем с того, что я даже не уверен, правильно ли это сделать.

Допустим, у меня есть скрипт (включая jquery):

foo = function() {

    this.bar = function() {
    alert('I\'m bar');
    }

    this.test = function() {
    $('body').append('<a onclick="my_var.bar();">Click me</a>');
    }

this.test();

}

var my_var = new foo();

Есть ли способ, я мог бы сделать переменную "my_var" динамической внутри функции "foo". Так что я мог бы сделать что-то вроде

$('body').append('<a onclick="'+the_variable_which_im_assigned_to+'.bar();">Click me</a>');

Спасибо

// Изменить:

Извините, если я не достаточно ясно, потому что я не совсем уверен, что я пытаюсь сделать сам.

Моя цель - заменить строку

$('body').append('<a onclick="my_var.bar();">Click me</a>');

с

$('body').append('<a onclick="'+what_ever_should_go_here+'.bar();">Click me</a>');

Поэтому, когда я звоню

var my_var = new foo();
var your_var = new foo();
var our_var = new foo();

Я мог бы вызывать функции внутри каждого объекта (после добавления чего-либо в тело документа).

Ответы [ 3 ]

2 голосов
/ 26 марта 2010

Вы должны использовать анонимные функции-обработчики вместо встроенных событий, например:

$('<a href="#">Click Me</a>')
    .click(function() { my_var.bar(); return false; })
    .appendTo('body');
1 голос
/ 26 марта 2010

В дополнение к переключению из встроенного обработчика событий вам нужно будет использовать замыкание для доступа к экземпляру Foo в обработчике.

function Foo() {
    var self = this;
    this.test = function() {
        $('body').append(
            $('<button>something</button>').click(function () {
                self.bar(); return false;
        }));
    }
}
0 голосов
/ 26 марта 2010

Если это общий план, который вы хотите / нужно использовать для присоединения обработчика событий, да, отправьте имя переменной в функцию, к которой относится foo:

foo = function(name_of_the_variable_which_im_assigned_to) { [...] };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...