Backbone View实例与视图`this`之间的区别

时间:2014-03-07 10:12:36

标签: javascript backbone.js memory-leaks

请在此处查看我的代码:

var DemoView = Backbone.View.extend({

  initialize: function() {
    this.render();
  },

  render: function() {
    var template = _.template('<p>text</p> \
      <p>text</p> \
      <p id="close">close</p>');
    this.$el.html(template());
    $('#demoContainer').html(this.el);
  },

  events: {
    'click #close': 'close'
  },

  close: function() {
    this.remove();
  }

});

如果我在下面使用此代码并手动点击click按钮删除视图:

(function() {

  var demoView = new DemoView();

})();

然后我检查内存泄漏,结果是:
enter image description here

但是,如果我使用下面的代码并等待5秒钟,视图会自动删除它:

(function() {

  var demoView = new DemoView();

  setTimeout(function() {
    demoView.remove();
  }, 5000);

})();

我没有内存泄漏:

enter image description here

任何人都可以解释原因吗?

libs版本:Backbone 1.1.2,jQuery 1.9.1

0 个答案:

没有答案