Javascript JS";。。。“不是一个构造函数”;神秘

Javascript JS";。。。“不是一个构造函数”;神秘,javascript,Javascript,我在这一点上感到困惑,我确实寻找了一个解决方案,但没有找到一个完全符合我的情况。这是我遇到问题的代码块 this.render = function() { this.$el.html(Handlebars.compile($("#home-tpl").html())); itemListView = new ItemListView(); itemListView.setItems(items); $('.content', this.$el).html(ite

我在这一点上感到困惑,我确实寻找了一个解决方案,但没有找到一个完全符合我的情况。这是我遇到问题的代码块

this.render = function() {
    this.$el.html(Handlebars.compile($("#home-tpl").html()));
    itemListView = new ItemListView();
    itemListView.setItems(items);
    $('.content', this.$el).html(itemListView.$el);
    return this;
};
它第一次运行时完美无缺。但当我从另一页导航回这个页面时

itemListView = new ItemListView();
节给了我一个“ItemListView不是构造函数”错误! 这就是ItemListView的外观

var ItemListView = function () {

  var service = new DataService();
  var items = [];

  this.initialize = function() {
      this.$el = $('<div/>');
      this.render();
  };

  this.viewAll = function() {
      items = service.viewall();
      this.render();
  }

  this.setItems = function(list) {
      items = list;
      this.render();
  }

  this.render = function() {
      this.$el.html(Handlebars.compile($("#item-list-tpl").html())(items));
      return this;
  };

  this.initialize();

  }
var ItemListView=函数(){
var service=newdataservice();
var项目=[];
this.initialize=函数(){
这.$el=$('');
这个。render();
};
this.viewAll=函数(){
items=service.viewall();
这个。render();
}
this.setItems=函数(列表){
项目=列表;
这个。render();
}
this.render=函数(){
这个.el.html(handlebar.compile($(“#项目列表tpl”).html()(项目));
归还这个;
};
这是初始化();
}

现在为什么它第一次运行而不是下一次运行?

在第二个代码块中,它是
ItemView
(如您所写)或
ItemListView
?p.s.不要忘了对局部变量使用
var
,例如
var ItemListView=new ItemListView()
!对不起,从错误的文件粘贴。更正了现在的问题。以前尝试过使用var,但没有成功。我的第一个怀疑是,
ItemListView
在第二次运行时不是同一个函数(甚至可能根本不是函数,因为在ES6之前,生成非构造函数的函数并不常见。)尝试将调试器添加到
render
函数中,并在第二次调用时检查
ItemListView
的值。