猿问

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

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

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



PIPIONE
浏览 486回答 3
3回答

大话西游666

请允许我实际回答内联问题。原型继承具有以下优点:它更适合动态语言,因为继承与它所处的环境一样动态。(这里对JavaScript的适用性应该很明显。)这允许你快速做事,比如在没有大量基础设施代码的情况下定制类。 。与经典的类/对象二分法方案相比,实现原型对象方案更容易。它消除了对象模型周围的复杂尖锐边缘的需要,如“元类”(我从未使用过类,我喜欢......对不起!)或“特征值”等。但它有以下缺点:检查原型语言的类型并非不可能,但这非常非常困难。大多数原型语言的“类型检查”是纯粹的运行时“鸭子打字”式检查。这不适合所有环境。同样难以通过静态(或通常甚至动态!)分析来优化方法调度。它可以(我强调:可以)很容易效率很低。类似地,对象创建在原型语言中可以(并且通常是)比在更传统的类/对象二分法中更慢。我想你可以在上面的行之间阅读并提出传统类/对象方案的相应优缺点。当然,每个区域都有更多,所以我会将其余部分留给其他人回答。

慕娘9325324

IMO原型继承的主要好处是它的简单性。语言的原型性质可以迷惑谁是人经典的训练,但事实证明,其实这是一个真正简单而强大的概念,差分继承。您不需要进行分类,代码更小,冗余更少,对象继承自其他更通用的对象。如果你原型思考,你很快就会注意到你不需要上课......原型继承在不久的将来会更受欢迎,ECMAScript第5版规范引入了该Object.create方法,该方法允许您以非常简单的方式生成从另一个继承的新对象实例:var obj = Object.create(baseInstance);所有浏览器供应商都在实施该标准的新版本,我认为我们将开始看到更纯粹的原型继承......
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答