Javascript ES6类:在类方法内部未定义全局变量

Javascript ES6类:在类方法内部未定义全局变量,javascript,ecmascript-6,Javascript,Ecmascript 6,我已经在类构造函数中创建了一个空数组this.contentElements作为全局变量,但是当我尝试从我的方法之一将对象推送到数组时,我得到错误“无法读取未定义的属性”push“。我弄不明白为什么这不管用 当我在构造函数中记录数组时,它返回空数组,但当我尝试在方法中记录数组时,它返回未定义数组 我也尝试过使用arrow函数表达式绑定该方法,成功率为0 export class Intro { constructor() { this.createTimeline(); th

我已经在类构造函数中创建了一个空数组this.contentElements作为全局变量,但是当我尝试从我的方法之一将对象推送到数组时,我得到错误“无法读取未定义的属性”push“。我弄不明白为什么这不管用

当我在构造函数中记录数组时,它返回空数组,但当我尝试在方法中记录数组时,它返回未定义数组

我也尝试过使用arrow函数表达式绑定该方法,成功率为0

export class Intro {

 constructor() {
    this.createTimeline();
    this.contentElements = []; 
 }

  createTimeline() {
    const contentArray = Array.from(document.querySelector('.intro-overlay').querySelectorAll('.content'));  

   contentArray.map(content => {
     const contentEl = content;
     const contentBounds = contentEl.getBoundingClientRect();
     const contentTop = contentBounds.top;

     this.contentElements.push({
       el: contentEl,
       top: contentTop
     })

     console.log(this.contentElements)
   });
  }
}

在构造函数中,在调用此.createTimeline之前,需要将空数组分配给this.contentElements。

更改构造函数中的顺序

contentElements在使用之前需要先初始化

export class Intro {

 constructor() {
    this.contentElements = [];
    this.createTimeline();
 }

  createTimeline() {
    const contentArray = Array.from(document.querySelector('.intro- 
    overlay').querySelectorAll('.content'));  

   contentArray.map(content => {
     const contentEl = content;
     const contentBounds = contentEl.getBoundingClientRect();
     const contentTop = contentBounds.top;

     this.contentElements.push({
       el: contentEl,
       top: contentTop
     })

     console.log(this.contentElements)
   });
  }
}

在此之前,您正在调用createTimeline。contentElements已定义谢谢,问题解决了!