如何在 JSON 对象上使用 foreach 调用 javascript 函数?

发布于 2024-10-16 16:44:43 字数 333 浏览 1 评论 0原文

我的问题很容易理解。我有一个 JSON 对象(请参阅代码),我将按照出现的顺序自动调用该对象的所有函数。

var installer = {
    a : function() {
          ...
        }
    b : function() {
          ...
        }
};

for(var func in installer) {
    fn.call(document);
};

您知道为什么前面的代码不起作用吗?抱歉,我是 javascript 的初学者。

提前致谢 !

问候。

My problem is pretty easy to understand. I have a JSON object (see code) and I will automatically call all functions of this object in the order that those appears.
.

var installer = {
    a : function() {
          ...
        }
    b : function() {
          ...
        }
};

for(var func in installer) {
    fn.call(document);
};

Have you any idea why the previous code doesn't work ? I'm sorry, I'm a beginner in javascript.

Thanks in advance !

Regards.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

只有影子陪我不离不弃 2024-10-23 16:44:43

您没有名为 fn 的变量,并且函数定义末尾也缺少逗号。

此外,您的函数不会按顺序调用,因为 JavaScript 会任意排序您的对象属性。您可能需要考虑使用数组,或者像我在下面所做的那样,指定一个确定顺序的数组。

var installer = {
    a : function() {
          ...
        },
    b : function() {
          ...
        },
};

var order = [ "a", "b" ];

for(var i = 0; i < order.length; i++) {
    installer[order[i]].call(document);
}

You don't have a variable called fn, and you are also missing commas at the end of your function definitions.

Additionally, your functions will not be called in order because JavaScript orders your object properties arbitrarily. You may want to consider using an array or, as I have done below, specify an array that determines the order.

var installer = {
    a : function() {
          ...
        },
    b : function() {
          ...
        },
};

var order = [ "a", "b" ];

for(var i = 0; i < order.length; i++) {
    installer[order[i]].call(document);
}
梅窗月明清似水 2024-10-23 16:44:43

您将 var func 声明为变量来循环 installer 的成员,但您使用 fn.call(...)fn 从哪里来?

您应该能够执行以下操作:installer[func].call(document) 而不是 fn.call(document)

此外,在安装程序对象中声明的函数不接受任何参数,但您将 document 作为参数传递。

[更新了代码以将缺少的 .call 添加到 installer[func](document)]

You declare var func as the variable to loop through the members of installer, yet you use fn.call(...). Where did fn come from?

Should you be able to do: installer[func].call(document) instead of fn.call(document).

Also your functions declared in the installer object don't take any arguments, yet you're passing document as an argument.

[updated code to add missing .call to installer[func](document)]

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文