【问题标题】:Javascript extends class [closed]Javascript扩展类[关闭]
【发布时间】:2011-01-16 09:30:12
【问题描述】:

扩展 javascript 类以使 B 类继承 A 类的所有内容(B 类扩展 A)的正确/最佳方法是什么?

【问题讨论】:

  • 其实...除了 b.prototype = new a; 还有其他方法吗
  • JavaScript 没有类。因此,这整个问题没有意义。你在谈论Java吗?还是动作脚本?那些 do 有类,但它们与 JavaScript 完全无关。或者您是在谈论一些在 JavaScript 中实现基于类的 OO 的 JavaScript 库,例如 MooTools?在这种情况下,答案取决于您所谈论的库。
  • 看看这个轻量级库,它可以满足您的需求:在 javascript 中扩展类。作为奖励,它还添加了接口和特征/混合。 github.com/haroldiedema/joii
  • 在 Mozilla 网站上查看 Javascript 原型链的简短概要:developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/…

标签: javascript extends


【解决方案1】:

看看Simple JavaScript InheritanceInheritance Patterns in JavaScript

最简单的方法可能是函数继承,但有利有弊。

【讨论】:

【解决方案2】:

Douglas Crockford 对 JavaScript 中的继承有一些很好的解释:

  1. prototypal inheritance:用 JavaScript 做事的“自然”方式
  2. classical inheritance: 更接近你在大多数 OO 语言中发现的内容,但有点违背 JavaScript 的本质

【讨论】:

  • 哇,Douglas Crockford 很好地解释了这一点,感谢这些很棒的链接。他创建public/privileged/private 方法的模式是一个启示。
【解决方案3】:
   extend = function(destination, source) {   
          for (var property in source) {
            destination[property] = source[property];
          }
          return destination;
    };

Extending JavaScript

您还可以在 for 循环中添加过滤器。

【讨论】:

  • 这既不是 OP 所要求的,也不是正确的“扩展”——你应该遍历 Object.keys 或者至少检查 hasOwnProperty
  • 需要检查hasOwnProperty,如果方法和属性相同会覆盖,以后无法调用超类方法。
猜你喜欢
  • 1970-01-01
  • 2022-11-03
  • 2019-03-19
  • 2013-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-02
  • 2020-07-22
相关资源
最近更新 更多