为了账号安全,请及时绑定邮箱和手机立即绑定

原型继承优于经典的好处?

原型继承优于经典的好处?

PIPIONE 2019-08-14 16:14:56
原型继承优于经典的好处?所以这些年来我终于停止了我的脚,并决定“正确”学习JavaScript。语言设计中最令人头疼的元素之一是它的继承实现。有Ruby经验,我很高兴看到闭包和动态打字; 但是对于我的生活来说,无法弄清楚使用其他实例进行继承的对象实例会带来什么好处。
查看完整描述

3 回答

?
大话西游666

TA贡献1817条经验 获得超14个赞

请允许我实际回答内联问题。

原型继承具有以下优点:

  1. 它更适合动态语言,因为继承与它所处的环境一样动态。(这里对JavaScript的适用性应该很明显。)这允许你快速做事,比如在没有大量基础设施代码的情况下定制类。 。

  2. 与经典的类/对象二分法方案相比,实现原型对象方案更容易。

  3. 它消除了对象模型周围的复杂尖锐边缘的需要,如“元类”(我从未使用过类,我喜欢......对不起!)或“特征值”等。

但它有以下缺点:

  1. 检查原型语言的类型并非不可能,但这非常非常困难。大多数原型语言的“类型检查”是纯粹的运行时“鸭子打字”式检查。这不适合所有环境。

  2. 同样难以通过静态(或通常甚至动态!)分析来优化方法调度。它可以(我强调:可以)很容易效率很低。

  3. 类似地,对象创建在原型语言中可以(并且通常是)比在更传统的类/对象二分法中更慢。

我想你可以在上面的行之间阅读并提出传统类/对象方案的相应优缺点。当然,每个区域都有更多,所以我会将其余部分留给其他人回答。


查看完整回答
反对 回复 2019-08-14
?
慕娘9325324

TA贡献1783条经验 获得超4个赞

IMO原型继承的主要好处是它的简单性。

语言的原型性质可以迷惑谁是人经典的训练,但事实证明,其实这是一个真正简单而强大的概念,差分继承

您不需要进行分类,代码更小,冗余更少,对象继承自其他更通用的对象。

如果你原型思考,你很快就会注意到你不需要上课......

原型继承在不久的将来会更受欢迎,ECMAScript第5版规范引入了该Object.create方法,该方法允许您以非常简单的方式生成从另一个继承的新对象实例:

var obj = Object.create(baseInstance);

所有浏览器供应商都在实施该标准的新版本,我认为我们将开始看到更纯粹的原型继承......


查看完整回答
反对 回复 2019-08-14
  • 3 回答
  • 0 关注
  • 485 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信