Java脚本对象 - 获取变量名称

时间:2010-03-26 12:18:11

标签: javascript dynamic variables

首先,我甚至不确定,如果这是正确的方法。

让我们说,我有这样的脚本(包括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();

有什么办法,我可以在函数“foo”中创建变量“my_var”动态。 所以我可以做类似

的事情
$('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 个答案:

答案 0 :(得分:2)

您应该使用匿名处理函数而不是内联事件,如下所示:

$('<a href="#">Click Me</a>')
    .click(function() { my_var.bar(); return false; })
    .appendTo('body');

答案 1 :(得分:1)

除了从内联事件处理程序切换之外,您还需要使用closure来访问处理程序中的Foo实例。

function Foo() {
    var self = this;
    this.test = function() {
        $('body').append(
            $('<button>something</button>').click(function () {
                self.bar(); return false;
        }));
    }
}

答案 2 :(得分:0)

如果这是您希望/需要用于附加事件处理程序的一般计划,是的,请将变量的名称发送到foo引用的函数:

foo = function(name_of_the_variable_which_im_assigned_to) { [...] };