如何用UML类图表示Javascript对象创建?

如何用UML类图表示Javascript对象创建?,javascript,object,uml,class-diagram,prototype-programming,Javascript,Object,Uml,Class Diagram,Prototype Programming,我在为我的JavaScript应用程序绘制准确的UML类图时遇到了一些问题。我已经阅读了一些UML参考资料,但仍然没有找到适合我的情况的答案,因为所有的例子都基于C++/Java的经典继承和类模型 我想用构造函数和它的原型对象的扩展来表示自定义JavaScript对象的创建,这与C++/Java类实例化有很大不同 您将如何用UML类图表示我的代码的简化版本 var Book = function(title, author) { this.title = title || 'No tit

我在为我的JavaScript应用程序绘制准确的UML类图时遇到了一些问题。我已经阅读了一些UML参考资料,但仍然没有找到适合我的情况的答案,因为所有的例子都基于C++/Java的经典继承和类模型

我想用构造函数和它的原型对象的扩展来表示自定义JavaScript对象的创建,这与C++/Java类实例化有很大不同

您将如何用UML类图表示我的代码的简化版本

var Book = function(title, author) {
    this.title = title || 'No title specified';
    this.author = author || 'No author specified';
}

Book.prototype.isDigital = false;

Book.prototype.titleDisplay = function() {
    alert(this.title);
};

var theHobbit = new Book ("The Hobbit", "J.R.R. Tolkien");
注: 我特别想在图中展示所有涉及的对象(Book、Book.prototype和theHobbit)是如何相互关联的,并展示原型中定义的参数与构造函数中定义的参数。 我知道我可以假装这本书是一个“经典”类,把它画得像Java一样,简化了特定的JavaScript继承机制,但我相信UML足够灵活,可以精确地描述我的案例

是否有专门针对JavaScript项目的UML指南?

我想看一下

它将创建一个图表,精确显示JS对象层次结构中的情况。

  • 让我们把主程序显示为A级
  • 请以大号字母开始上课,以小号字母开始上课。或者它几乎不可读
  • 很多事情很难说,不知道你的意思。这是一个图的存根:

请读一读:

我认为没有,听到任何关于它的消息都会感到惊讶。如果我是你,我会“假装”book是一个包含所有这些公共属性的常规类(与私有属性不同,但你没有任何属性)。同样,在序列图中,创建将以相同的方式表示。我认为UML不应该区分一种语言的对象模型的类型。感谢Gangus的第一个贡献!我试图澄清:我没有忘记提到类,我的代码实际上不在类中,因为Javascript是一种无类语言。在Javascript中,只有对象,没有类。创建新对象时,可以通过两种方式模拟继承:1)对象构造器(函数)可以将属性/方法分配给新对象。2) 将属性/方法分配给构造函数的原型,新对象将有权访问这些原型属性/方法(但仅作为引用,而不是它们的本地副本)。更清楚?然后你应该把对象画成类块,通过“实例化”依赖关系来显示创建,或者,如果是通过原型,通过泛化关系来显示。至于关联,它们是一样的。对象图没有帮助,因为实例不能有自己的属性。@PavelMaximov,谢谢你提醒我JS的具体属性。过去4年我对Java太深了。谢谢你,乔希,一个非常有启发性的网站!