在具有多个对象的类中引用对象和属性

时间:2019-07-30 04:50:34

标签: javascript

好吧,我有以下内容:

class Something {
  foo = {
    a: '123',
    get_a() {
      return this.a;
    }
  };

  bar = {
    b: '456',

    get_b() {
      return this.b;
    },

    get_c() {
      return this.get_a();

    }
  };

}
window.s = new Something();
window.s.bar.get_c();

如果我使用s.bar.get_b(),它将返回“ 456”。在get_b()中,我可以引用this.b,它似乎是对bar的引用。但是,当我尝试致电s.bar.get_c()时,出现错误消息:

  

未捕获的TypeError:this.get_a不是函数

基于我对this是对bar的引用的理解,我认为这很有意义。但是,我不知道从foo.get_a()实际引用bar.get_c()所需要做的工作。我已经尝试了各种方法,但是似乎没有任何效果,除了仅使用s.foo.get_a()之外,但我不想直接引用s对象。我在这里想念什么?我开始怀疑我从根本上讲错了我的课堂结构……

编辑:不知道为什么有人觉得需要更新我的帖子才能执行代码片段。.似乎过分了__(ツ)_ /

无论如何..我应该提到的一件事:实际上,我实际上并不是从类函数之外的其他上下文中调用s.foo.get_a(),这就是为什么我提到不想直接引用{{1 }}对象。为了清楚起见,我只是走了一条完整的路!

1 个答案:

答案 0 :(得分:2)

使用arrow functions

class Something {
  foo = {
    a: '123',
    get_a() {
      return this.a;
    }
  };

  bar = {
    b: '456',

    get_b() {
      return this.b;
    },

    get_c: () => {
      return this.foo.get_a();
    }
  };

}

const a = new Something();

console.log(a.bar.get_c());