javascript - 这是在 Javascript 中进行继承的好方法吗?

标签 javascript node.js inheritance

<分区>

Possible Duplicate:
What is the reason to use the ‘new’ keyword here?

我正在研究 Mongoose(多么漂亮的软件......)并且看到了这个:

function Model (doc, fields, skipId) {
  Document.call(this, doc, fields, skipId);
};

/*!
 * Inherits from Document.
 */
Model.prototype.__proto__ = Document.prototype;

哇,这是我见过的设置继承的最简单的方法。我知道这不能用浏览器完成,但服务器端......它看起来像一个赢家:

  • 派生类调用父类的构造函数
  • 设置派生类的原型(prototype)对象,使proto指向父类的原型(prototype)。

就是这样!

这可能是在服务器端实现继承的最干净、最简单的方法吗?我问是因为我爱上了它,并且想知道我是否遗漏了一些限制/问题......?

最佳答案

好吧,一些浏览器的 franeworks 曾经通过 A.prototype = new B() 来模仿这一点,但这有点 hacky :) 这两种方式的一个重要好处是猴子修补父类使后代能够使用父代的新的/更改的方法(A.prototype = $.extend({}, B.prototype) 和类似的 hack 不是这种情况)。

至于所描述的方法,它看起来肯定更干净,所以我会投"is"的票

关于javascript - 这是在 Javascript 中进行继承的好方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13301131/

相关文章:

python - 如何在python中引用父方法?

javascript - 使用 Math 的方法扩展窗口对象

javascript - 在 46.0 中工作时,getUserMedia 在 chrome 版本 48.0.2560.0 中不起作用

javascript - 即使有额外的反斜杠,Nodejs 字符串中的反斜杠也不会显示

javascript - 在 Node.js 中进行同步 MongoDB 查询的正确方法是什么?

C# 继承最佳实践

javascript - 如何使用 underscorejs 进行分组并获取平均值

javascript - C# 中的文件夹对话框

javascript - Joi 验证 : Capture the value passed in Custom Error Message

java - 如何打破父类(super class)构造函数链?