2012-12-24 76 views
-1

Possible Duplicate:
How to convert a string value to a variable in javascript?使用字符串来调用函数方法?

在Javascript中,我有一个对象,看起来像这样:

clock = function(){ 
    this.load = function(){ 
     alert("once"); 
    } 

    this.once = function(){ 
     alert("load"); 
    } 
} 
var clock = new clock(); 

在页面加载,我叫钟对象中的load()功能,像这样

clock.load(); 

当用户点击一个链接,但是,我需要能够运行clock.once()。像这样称呼是好的,但不符合我正在做的动态需求。

比方说,我需要调用clock.once()当用户点击一个<a>标签:

$("a").click(function(){ 
    var id = $(this).attr("href").match(/[a-zA-Z]+/g); 
    [id].once(); 
} 

我想通,将工作,在该once()功能正在从从字符串id抓住调用的对象。

当运行这一点,但是,我得到以下错误:

Uncaught TypeError: Object clock has no method 'once'

手动使用clock.once()工作正常调用once()

+0

真的没有提供足够的信息。显然你有不止一个“时钟”的实例,如果没有,为什么不用'clock.once()'重复调用?为什么不一次接受id参数? –

+0

为什么downvote?我没有意识到不知道有什么东西被认为是不好的。 – Charlie

+0

@Charlie:我认为你的问题是如何形成的(它应该提供更多的信息),而不是你提出的问题。 – Andre

回答

1

[id].once不会不起作用,因为您没有引用您创建的包含时钟对象的特定数组。你需要一个特定的数组,你已经存储了多个时钟对象实例(如果你已经构建了合适的数组)。

如果你在前面创建的时钟对象的数组:

var clocks = []; 
clocks.push(new clock()); 
clocks.push(new clock()); 

然后,你可以索引像这样假设的ID特定的阵列是一个有效的索引到该数组:

clocks[id] 

如果你真的只是问如何将一个字符串转换为数字,你可以用几种方法来完成。这里有两种常见的方法:

parseInt(id, 10) 
+id 
+1

它的语法是有效的,但'.once'当然不存在。 –

+1

@FelixKling - 好的,我修改了我的措辞,但你明白了。这不是代码将在这种情况下工作。 – jfriend00