gpt4 book ai didi

javascript - 使用变量作为可能是多级深度的函数名称

转载 作者:行者123 更新时间:2023-12-03 03:25:08 25 4
gpt4 key购买 nike

我浏览了该网站,似乎找到了一些解决方案,但似乎没有一个有效。所以问题就在这里。

我有以下 JavaScript:

THEOBJECT = {
init: function() {
this.tools.init();
}
};

THEOBJECT.tools = {
active: false,
init: function() {
// active variable updated elsewhere/loading
if (!this.active) {
THEOBJECT.utils.timeout('tools.init', 100);
}
// is active so continue
}
};

THEOBJECT.utils = {
timeout: function(functionName, time) {
setTimeout(function() {
THEOBJECT[functionName]();
}, time);
}
};


THEOBJECT.init();

运行 THEOBJECT.utils.timeout 时出现错误:

THEOBJECT[functionName] is not a function

我正在尝试运行THEOBJECT.tools.init()

我假设这是因为它不是 THEOBJECT 对象的直接函数,有办法解决这个问题还是 split() 是最好的方法?

最佳答案

还有其他选项可以使用 lodash.js 来完成此操作。请查看更新后的代码片段。

或者采用下面提到的传统方法

您正尝试以错误的方式访问属性

你正在做的THEOBJECT[tools.init]是不正确的。它应该像 THEOBEJECT[tools][init]

THEOBJECT = {
init: function() {
this.tools.init();
}
};

THEOBJECT.tools = {
active: false,
init: function() {
// active variable updated elsewhere/loading
if (!this.active) {
THEOBJECT.utils.timeout('tools.init', 100);
}
console.log("active")
// is active so continue
}
};

THEOBJECT.utils = {
timeout: function(functionName, time) {
setTimeout(function() {
_.get(THEOBJECT,functionName);
}, time);
}
};


THEOBJECT.init();
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>

关于javascript - 使用变量作为可能是多级深度的函数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46364430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com