我浏览了该站点,似乎遇到了一些解决方案,但似乎没有一个可行。这就是问题所在。

我有以下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>

10-04 16:11