使用类和外部类运行函数

时间:2017-04-04 09:45:37

标签: javascript

我有一个函数可以在我的类中设置一个值并执行其他一些操作。我需要在类中和类外部运行此函数。

该函数名为state(val)。据我所知,您不需要在名称前添加function

我只是得到一个错误说

  

状态未定义

这是我的代码

// Menu control object
    class menuControl {
      constructor(obj, children, items) {
        this.children = children;
        this.elm = obj;
        this.state = 0;
      }

      state(val) {
        this.state = val;
        for(var index in controls) {
          if (index !== not) {
            addClass(controls[index].elm, 'disabled');
          } else {
            removeClass(controls[not].elm, 'disabled');
          }
          if (this.state === 0) {
            removeClass(controls[index].elm, 'disabled');
          }
        }
      }

      toggle() {
        // MENU ACTIVE
        if (this.state === 0) {
          for(var i in this.children) {

            // Add required classes
            if (this.children[i][1] === 1) {
              addClass(this.children[i][0], 'toggled');
            } else {
              removeClass(this.children[i][0], 'toggled');
            }
          }
          this.state(1); // Toggle the state
        } else {

          // MENU INACTIVE
          for(var i in this.children) {
            removeClass(this.children[i][0], 'toggled');
          }

          this.state(0); // Toggle the state
        }
      }
    }

更新

// Menu control object
    class menuControl {
      constructor(obj, children, items) {
        this.children = children;
        this.elm = obj;
        this.state = 0;
      }

      setState(val) {
        this.state = val;
        for(var index in controls) {
          if (index !== not) {
            addClass(controls[index].elm, 'disabled');
          } else {
            removeClass(controls[not].elm, 'disabled');
          }
          if (this.state === 0) {
            removeClass(controls[index].elm, 'disabled');
          }
        }
      }

      toggle() {
        // MENU ACTIVE
        if (this.state === 0) {
          for(var i in this.children) {

            // Add required classes
            if (this.children[i][1] === 1) {
              addClass(this.children[i][0], 'toggled');
            } else {
              removeClass(this.children[i][0], 'toggled');
            }
          }
          setState(1); // Toggle the state <--------- Get the error here
        } else {

          // MENU INACTIVE
          for(var i in this.children) {
            removeClass(this.children[i][0], 'toggled');
          }

          setState(0); // Toggle the state
        }
      }
    }

1 个答案:

答案 0 :(得分:2)

你要两次定义状态:

where

所以你需要给另一个名字中的一个。例如,您可以调用方法td。使用动词作为方法名称也有助于将它们与属性区分开来。