首页 > 解决方案 > 通过在构造函数中获取来分配属性

问题描述

我是 JavaScript 的初学者,所以请原谅我缺乏知识。

我想分两步使用自定义 JavaScript 类的属性初始化一个对象。

第一:根据构造函数中的参数初始化一些属性

class Test {
    constructor(a, b, url) {
            
      this.a = a;
      this.b = b;
      this.url = url;
}


第二:请求url并将响应数据分配给更多属性

class Test {
    constructor(url, a, b) {
      
      this.a = a;
      this.b = b;
      this.url = url;
      
      fetch(this.url)
        .then(response => response.json())
        .then((data) => {
          this.dataA = data;
          this.dataB = data.b;
          this.dataC = data.c;
        })
    }
  }

不知何故,无法从外部访问在 fetch 函数期间初始化的属性。例如,如果我调用构造函数中的属性,我只会收到一个未定义的对象。

class Test {
    constructor(url, a, b) {
      
      this.a = a;
      this.b = b;
      this.url = url;
      
      fetch(this.url)
        .then(response => response.json())
        .then((data) => {
          this.dataA = data;
          this.dataB = data.b;
          this.dataC = data.c;
          console.log(this.dataA, this.dataB, this.dataC) // data accessible
        })

    console.log(this.dataA, this.dataB, this.dataC)// data undefined
    }
  }

任何人都有一个想法,为什么会这样?也许是因为请求是异步的?另外,我真的不确定,如果通常在构造函数中发出请求是正常的。你怎么看?

提前致谢!

标签: javascriptconstructorfetch

解决方案


推荐阅读