Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/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 如何使用UML对Backbone.js应用程序建模?_Javascript_Backbone.js_Uml - Fatal编程技术网

Javascript 如何使用UML对Backbone.js应用程序建模?

Javascript 如何使用UML对Backbone.js应用程序建模?,javascript,backbone.js,uml,Javascript,Backbone.js,Uml,我有一个web应用程序,它使用Backbone.js框架(基于原型)。但是,有一些面向对象的代码不是Backbone.js代码。我的问题是:如果不是所有的代码都是面向对象的,我如何用UML记录应用程序建模? 如何基于样式原型建模并将其与OO相结合?是否可能和/或正确?有人能给我指一些文件吗 在无类语言中,您不能直接为代码绘制类图 你可以做的是绘制原型或对象而不是类。你可以说只要你在主干中使用*.extend({…})样式的类定义,那么你的主干类模型就是一个标准。面向对象类模型 考虑: //a b

我有一个web应用程序,它使用Backbone.js框架(基于原型)。但是,有一些面向对象的代码不是Backbone.js代码。我的问题是:如果不是所有的代码都是面向对象的,我如何用UML记录应用程序建模?
如何基于样式原型建模并将其与OO相结合?是否可能和/或正确?有人能给我指一些文件吗

在无类语言中,您不能直接为代码绘制类图


你可以做的是绘制原型或对象而不是类。

你可以说只要你在主干中使用
*.extend({…})
样式的类定义,那么你的主干类模型就是一个标准。面向对象类模型

考虑:

//a base class
var ViewBase = Backbone.View.extend({
  //constructor
  initialize: function() {
    //instance field
    this.someProp = "value";
  },

  //overrides a superclass method
  remove: function() {
     this.cleanup();
     //call superclass method
     Backbone.View.prototype.remove.apply(this, arguments);
  },

  //overrideable method
  cleanup: function() { ... },

  //an abstract method that must be implemented. It's not a compile
  //time contract, but will crash in runtime if you don't implement it
  getContext: function() { throw new Error("NotImplemented"); }
});

//derives a new class, doesn't affect the base class implementation
var ListItemView = ViewBase.extend({
  //constructor
  initialize: function() {
    //instance field
    this.someOtherProp = "value";

    //constructor chaining
    ViewBase.prototype.initialize.apply(this, arguments);
  },

  //add new method
  filterUsers: function() { ... },

  //hides a superclass method
  cleanup: function() { ... },

  //implement an abstract method
  getContext: function() { ... }

}, {
  //a static (class) method
  create: function() { ... }
}); 

//instantiates a class
var view = new ListItemView();

//modifies the instance, but does not modify the prototype
//i.e. class definition
view.foo = 'bar';
虽然主干内部确实使用原型继承链,但这里没有使用“原型特征”。
extend
函数不会修改现有对象的原型,除非您稍后使用类似于
ViewBase.prototype.something='foo'
的内容修补超类原型,否则超类原型在应用程序的整个生命周期内都将保持不变


当然缺少的是私有/受保护的属性,但是主干类模型与Java或C#没有什么不同,所以我不明白为什么标准UML类图不能描述它?

这句话“但是,有一些面向对象的代码不是Backbone.js代码。”相当令人困惑(即使在我编辑了你的问题并试图澄清之后)。你能澄清一下你的意思吗?在我看来,Backbone.js和代码都是面向对象的。(对不起,我的英语)Bockbone代码是基于原型的,因为使用对象而没有类。但是,系统的另一部分是用面向对象的风格编程的(剩下的代码),这部分由Backbone.js代码使用。@FabienQuatravaux,它们不一样。Ithink@vicenrele:JavaScript本机没有类,因此如果您可以描述“面向对象”的部分代码更详细。你能指出一些原型图的示例或文档吗?谢谢。我同意。当你说
view.foo='bar';
什么是“foo”?它是什么意思“foo”?我在其他网站上读过它…@vicenrele另一个问题:行:
ViewBase.prototype.initialize.apply(这是参数);
参数的含义是什么?是保留字吗?@vicenrele,是的,它指传递给当前函数(作用域)的任何参数: