Javascript区分组合与继承

时间:2014-06-18 15:01:26

标签: javascript inheritance prototype composition

在classfull-Style(c ++)或传统的设计模式(GofPatterns)中,非常清楚,组合和继承之间有什么区别,它是如何实现的以及何时使用(优点/缺点)。 / p>

但是你如何在作曲或者#34; normal"之间徘徊?在JS中继承?或者它被用作相同的术语?

原型继承是例如定义为组合还是继承?

你在想什么?

2 个答案:

答案 0 :(得分:1)

  

原型继承是例如定义为组合还是继承?

     你在想什么?

这不是我在想什么,而是语言核心提供的......

  

在classfull-Style(c ++)或传统的设计模式(GofPatterns)中,非常清楚,组合和继承之间有什么区别,它是如何实现的以及何时使用(优点/缺点)。 / p>      

但是你如何在作曲或者#34; normal"之间徘徊?在JS中继承?或者它被用作相同的术语?

......当然,不应该将概念弯曲得多。因此对于JavaScript来说,组合和继承的数量与支持这些范例的任何其他PL一样多。 JavaScript功能委派,它已经启用了代码重用的两种变体。首先,继承,它在JavaScript中被委托自动机所涵盖,该委托自动机绑定到构造函数的[prototype]属性。其次,对象组合,它基于通过其中一种调用方法([call][apply])显式委派一个函数。

总结:

  • 原型代表团(自动)==继承
  • 明确授权功能对象== 基于角色的组合概念,如 Mixins Traits / Talents
  • 逐步将属性从一个对象复制到另一个对象==另一种实现混合组合的方式

我已经在其他两个回复中提供了示例......

答案 1 :(得分:0)

当我第一次学习Java时,我很想尝试用Javascript做同样的事情。但这是一个错误的想法。 Javascript允许进行面向对象编程。使用Javascript完成OOP的方式与C ++或Java不同:它是您使用OOP的方式,而不是语言本身。

我建议您使用这些链接正确了解如何使用Javascript:

http://javascriptissexy.com/how-to-learn-javascript-properly/

http://javascriptissexy.com/learn-intermediate-and-advanced-javascript/