在类中使用函数参数调用函数时,在这些函数中无法访问字段。为什么? [重复]

问题描述 投票:0回答:1

class Field1 {
  data = 0;
  constructor(init) {
    this.data = init;
  }
}

class Field2 {
  data = 0;
  constructor(init) {
    this.data = init;
  }
}

class Field3 {
  data = 0;
  constructor(init) {
    this.data = init;
  }
}

class Test {
  field1 = new Field1(1);
  field2 = new Field2(2);
  field3 = new Field3(3);

  constructor() {
    this.compose2(this.func1, this.func2, this.func3);
  }

  func1() {
    console.log("init func1");
    console.log(this.field1.data);
  }
  func2() {
    console.log("init func2");
    console.log(this.field2.data);
  }
  func3() {
    console.log("init func3");
    console.log(this.field3.data);
  }
  compose2(...args) {
    console.log(args);

    args.reduce(
      (prevFunc, nextFunc) => {
        nextFunc();
      },
      (init) => init
    );
  }
}

new Test();

在func1、func2、func3函数内部,名为field1、field2、field3的类字段是不可访问的。 我收到错误消息“无法读取未定义的属性(读取‘field1’)”。我认为这是因为 Class 语法。因为它可以在不上课的情况下找到。

javascript
1个回答
0
投票

您需要设置

this
上下文,这可以通过
Function#call
来完成。

nextFunc.call(this);
© www.soinside.com 2019 - 2024. All rights reserved.