【问题标题】:JavaScript/Node.js: Why prototype.__proto__ = prototype instead of newJavaScript/Node.js:为什么prototype.__proto__ =原型而不是new
【发布时间】:2011-09-09 20:26:43
【问题描述】:

我正在研究 node.js 的 Express 框架,所有继承都由以下人员完成:

Collection.prototype.__proto__ = Array.prototype;

那不等于:

Collection.prototype = new Array;

另一个:

var app = HTTPSServer.prototype;

function HTTPSServer(options, middleware){
  connect.HTTPSServer.call(this, options, []);
  this.init(middleware);
};

app.__proto__ = connect.HTTPSServer.prototype;

这些方法有什么好处吗?

提前致谢!

示例来自:

https://github.com/visionmedia/express/blob/master/lib/router/collection.js

https://github.com/visionmedia/express/blob/master/lib/https.js

【问题讨论】:

    标签: javascript node.js express


    【解决方案1】:

    new Array 调用构造函数。设置__proto__ 不会。这是唯一的区别。

    我想作者是太懒了不想用Object.create

    【讨论】:

    • 这和jQuery有什么关系?
    • 我认为__proto__ 的使用最初是为了防止与其他元素发生明显的冲突。其他人都同意这是个好主意?
    • @JimSchubert 我晚了大约 10 秒修改了:\ 重新提交了评论。
    • 不,我很好奇这种做法的起源,那是我记得第一次看到它,在 jQuery 中工作......但是,我想我已经得到纠正,这是一个 ENGINE 的东西,而不是图书馆的东西,所以你去吧。
    【解决方案2】:
    Collection.prototype = new Array;
    

    每个 Collection 都将共享同一个 Array 实例。

    我不确定这是否适用于__proto__

    【讨论】:

      猜你喜欢
      • 2012-03-16
      • 1970-01-01
      • 1970-01-01
      • 2021-11-29
      • 1970-01-01
      • 2013-08-08
      • 2012-04-15
      • 1970-01-01
      相关资源
      最近更新 更多