使用javascript继承在Backbone中创建工厂视图

时间:2014-04-17 14:08:18

标签: javascript oop backbone.js

我正在学习JS原型和对象,并遵循Js模式创建Backbone视图的最佳方法,该视图根据传递的模型返回不同的对象

    var MaleView = function() {
      this.initialize = function() {
        // stuff
      }
    },
    FemaleView = function() {
      this.initialize = function() {
        // stuff
      }
    },
    HumanFactory = function() {
      var self;

      if (this.model && this.model.get('type') === 'male') {
        self = new MaleView();
      }
      else {
        self = new FemaleView();
      }
      return self;
    },
    HumanView = Backbone.View.extend(new HumanFactory());

我知道这意味着当HumanView初始化时,模型变量不是这样,HumanView将始终是一个FemaleView。我的问题是使用javascript继承实现这一目标的最佳方法是什么。

最简单的方法是什么?

1 个答案:

答案 0 :(得分:0)

它设法让我的想象力变得简单,就是把工厂搬到HumanView那么简单。

var MaleView = Backbone.View.extend({
  this.initialize = function() {
    // stuff
  }
}),
FemaleView = Backbone.View.extend({
  this.initialize = function() {
    // stuff
  }
}),
HumanView = function(properties) {
  var self;
  if (properties) {
    if (properties.model.get('type') === 'male') {
      self = new MaleView(properties);
    }
    else {
      self = new FemaleView(properties);
    }
    return self;
  }
};