将函数引用存储在散列中在javascript中无法正常工作

Storing function references in a hash not working properly in javascript

本文关键字:常工作 工作 javascript 引用 函数 存储      更新时间:2023-09-26

我在blog1.js:中有这个简单的代码

var blog_validation = (function() {
  var fields = {}
  var email = function() {
    console.log("validating email")
  }
  var add_field = function(field, type) {
    fields[field] = type;
  }
  return {
    fields: fields,
    email: email,
    add_field: add_field
  };
})();

在blog2.js:中

(function() {
  blog_validation.add_field("test", "email");
  blog_validation.fields['test']();
})();

在上面的例子中,我对"test"字符串进行了硬编码,以便于故障排除,而不是在for循环中迭代所有哈希值。电子邮件功能目前也没有任何作用,我只是想看看它是否被正确调用。

基本上,在散列中调用函数引用是不起作用的,它只是说"字符串不是函数"。

从网络上的其他资源中,我看到人们将函数保存在哈希中,然后像这样稍后调用它们,但我没有看到人们存储函数引用,所以我不确定这是否可行,但既然你可以将函数存储在哈希中我想你也可以存储函数引用?

有人能解释一下为什么不起作用吗?

错误是正确的。您正在将字符串"email"添加到test,然后尝试将其作为函数运行。

您需要对代码进行一个小的更改,以便使用以下字符串调用方法:

var add_field = function(field, type) {
  fields[field] = this[type];
}

演示