Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 这是指它所属的类,而不是从中调用实例的类_Javascript_Oop_This - Fatal编程技术网

Javascript 这是指它所属的类,而不是从中调用实例的类

Javascript 这是指它所属的类,而不是从中调用实例的类,javascript,oop,this,Javascript,Oop,This,我想使用类ElPush将元素推送到itemLog数组中,该数组存在于下面给出的类ActiveItem中 class ElPush { pushElement(type) { document .querySelector(`#${type}-projects`) .querySelectorAll("li") .forEach((el) => { this.itemLog.push(el); }

我想使用类ElPush将元素推送到itemLog数组中,该数组存在于下面给出的类ActiveItem中

class ElPush {
  pushElement(type) {
    document
      .querySelector(`#${type}-projects`)
      .querySelectorAll("li")
      .forEach((el) => {
        this.itemLog.push(el);
      });
  }
}
this.itemLog.push(el)行抛出错误
无法读取未定义的属性“push”

我知道这不是一个切实可行的解决方案,但我只是在实践opp概念,我非常希望提供任何解决方案

/-仍然基于类,以便OP能够识别。
//-应重构查询部分
//作为简单的助手/实用程序功能。
//
类ProjectItemQuery{
查询(类型){
从(文档)返回数组.from
.querySelector(`${type}-projects`)
.querySelectorAll(“li”)
);
}
}
//重构查询助手。
函数查询项目(类型){
从(文档)返回数组.from
.querySelector(`${type}-projects`)
.querySelectorAll(“li”)
);
}
类活动项{
构造函数(){
const itemQuery=新建ProjectItemQuery;
this.list=itemQuery.query(“活动”);
//this.list=查询项目(“活动”);
log('ActiveItems::list:',this.list);
}
}
类完成数据项{
构造函数(){
this.list=查询项目(“完成”);
log('FinishedItems::list:',this.list);
}
}
类应用程序{
静态init(){
常量activeItemList=(新的ActiveItems).list;
const finishedItemList=(新FinishedItems).list;
log('App::init::activeItemList:',activeItemList');
log('App::init::finishedItemList:',finishedItemList');
}
}
App.init()
.as控制台包装{最小高度:100%!重要;顶部:0;}

  • 酒吧
    • 巴兹
    • 生意
    /-仍然基于类,以便OP能够识别。
    //-应重构查询部分
    //作为简单的助手/实用程序功能。
    //
    类ProjectItemQuery{
    查询(类型){
    从(文档)返回数组.from
    .querySelector(`${type}-projects`)
    .querySelectorAll(“li”)
    );
    }
    }
    //重构查询助手。
    函数查询项目(类型){
    从(文档)返回数组.from
    .querySelector(`${type}-projects`)
    .querySelectorAll(“li”)
    );
    }
    类活动项{
    构造函数(){
    const itemQuery=新建ProjectItemQuery;
    this.list=itemQuery.query(“活动”);
    //this.list=查询项目(“活动”);
    log('ActiveItems::list:',this.list);
    }
    }
    类完成数据项{
    构造函数(){
    this.list=查询项目(“完成”);
    log('FinishedItems::list:',this.list);
    }
    }
    类应用程序{
    静态init(){
    常量activeItemList=(新的ActiveItems).list;
    const finishedItemList=(新FinishedItems).list;
    log('App::init::activeItemList:',activeItemList');
    log('App::init::finishedItemList:',finishedItemList');
    }
    }
    App.init()
    
    .as控制台包装{最小高度:100%!重要;顶部:0;}
    
    
  • 酒吧
    • 巴兹
    • 生意

    当您在
    ElPush.pushElement
    内部使用
    ActiveItem
    方法时,您必须在那里传递
    ActiveItem
    实例,或者将各自的容器属性添加到
    ElPush
    中,我不明白;itemLog不是ElPush的属性;为什么希望这样做?如果OP希望保持基于类的方法,那么
    itemLog
    应该是任何
    ElPush
    实例的属性,而不是
    ActiveItem
    实例的属性。后者中的日志记录(如示例代码所示)应该是
    console.log(elPush.itemLog)
    。任何保持
    itemLog
    任何
    ActiveItem
    实例属性的方法都必须通过其他(而不是基于类的)组合技术提供
    push
    功能。实际上,需要ElPush的类有多个,因此每个类的itemLog应该不同,我只想使用同一个ElPush类根据pushElement的类型参数在不同的项目日志中推送不同的元素。@abhinaykhalatkar。。。“…我只想使用相同的ElPush类,根据pushElement的类型参数在不同的项日志中推送不同的元素。”。。。但是这个任务根本不需要类抽象。一个简单的帮助器/实用程序函数已经足够完成这项工作了。当您在
    ElPush.pushElement
    中使用
    ActiveItem
    方法时,您要么在那里传递
    ActiveItem
    实例,要么将各自的容器属性添加到
    ElPush
    中,我不明白;itemLog不是ElPush的属性;为什么希望这样做?如果OP希望保持基于类的方法,那么
    itemLog
    应该是任何
    ElPush
    实例的属性,而不是
    ActiveItem
    实例的属性。后者中的日志记录(如示例代码所示)应该是
    console.log(elPush.itemLog)
    。任何保持
    itemLog
    任何
    ActiveItem
    实例属性的方法都必须通过其他(而不是基于类的)组合技术提供
    push
    功能。实际上,需要ElPush的类有多个,因此每个类的itemLog应该不同,我只想使用同一个ElPush类根据pushElement的类型参数在不同的项目日志中推送不同的元素。@abhinaykhalatkar。。。“…我只想使用相同的ElPush类,根据pushElement的类型参数在不同的项日志中推送不同的元素。”。。。但是这个任务根本不需要类抽象。一个简单的helper/utility函数已经足够做这项工作了。我已经使用了这种返回方法,但我想知道的是,上述给定方法是否有效
    class ActiveItem {
      constructor() {
        this.itemLog = [];
        const elPush = new ElPush();
        elPush.pushElement("active");
    
        console.log(this.itemLog);
      }
    }
    class FinishedItem {
      constructor() {
        this.itemLog = [];
        const elPush = new ElPush();
        elPush.pushElement("finished");
    
        console.log(this.itemLog);
      }
    }
    class App {
      static init() {
        const activeList = new ActiveItem();
      }
    }
    App.init();