【问题标题】:How to fix 'Private field must be declared in an enclosing class'如何修复“必须在封闭类中声明私有字段”
【发布时间】:2022-01-09 20:28:39
【问题描述】:

https://ws.audioscrobbler.com/2.0/?method=album.getinfo&api_key=d94b7d68284cbab1cdb7c2c3c81fd913&artist=kendrick+lamar&album=damn&format=json

上面的链接是一个专辑的 json 文件,它在图像部分下有一个专辑封面的 URL,但是当我尝试提取它时,我收到一个语法错误,告诉我“Uncaught SyntaxError: Private field '#text ' 必须在封闭类中声明”。

对于下面的代码,为了获取大图像,我希望执行 data.album.image[2].#text,但是每当我这样做时,我都会收到一条错误消息告诉我:“Uncaught SyntaxError: Private字段 '#text' 必须在封闭类中声明”(此处的屏幕截图:https://gyazo.com/f6c9a16af02bda42313b4f369a753c33)。这是因为数字符号吗?因为当我执行 data.album.image[2].size 时,我得到了预期的大输出。如果是这样,我该如何解决?

async function getAlbum() {
        AlbumName = localStorage.getItem("textvalue");
        ArtistName = localStorage.getItem("textvalue2");

        AlbumName = AlbumName.replace(" ", "+");
        ArtistName = ArtistName.replace(" ", "+");

        const response = await fetch(
          "https://ws.audioscrobbler.com/2.0/?method=album.getinfo&api_key=d94b7d68284cbab1cdb7c2c3c81fd913&artist=" +
            ArtistName +
            "&album=" +
            AlbumName +
            "&format=json"
        );

        const data = await response.json();

        const numberOfTracks = data.album.tracks.track.length;
        const AlbumImage = data.album.image[2].#text;
}

【问题讨论】:

  • @jsotola 我在底部留下了错误截图的链接,我还应该放什么?
  • 不是每个人都可以查看图像...请包括实际的错误文本

标签: arrays json api url


【解决方案1】:

您不能使用点符号直接访问#text 属性,因为它是一个私有字段。您必须使用括号表示法。

将代码的最后一行替换为

const AlbumImage = data.album.image[2]['#text'];

更多详情在这里https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/Private_class_fields

这里是https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_accessors

【讨论】:

  • 非常感谢!
猜你喜欢
  • 2021-12-14
  • 1970-01-01
  • 2017-10-02
  • 1970-01-01
  • 1970-01-01
  • 2015-07-17
  • 2012-07-16
  • 2012-03-10
相关资源
最近更新 更多