我浏览了该站点,似乎遇到了一些解决方案,但似乎没有一个可行。这就是问题所在。
我有以下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]不是函数
我正在尝试运行
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>