使用class extends而不是util.inherits

时间:2016-03-16 14:08:22

标签: javascript node.js class ecmascript-6

而不是使用:

var inherits = require('util').inherits;
var EventEmitter = require('events').EventEmitter;

var Clock = function Clock() {
  this._started = false;
  EventEmitter.call(this);
};

inherits(Clock, EventEmitter);

Clock.prototype.start = function start() {};

使用class extends非常简洁:

var EventEmitter = require('events').EventEmitter;

class Clock extends EventEmitter {
  constructor() {
    super();
    this.super_ = EventEmitter;
    this._started = false;
  }

  start() {}
}

我已将this.super_ = EventEmitter添加到构造函数中,因为util.inherits正在执行相同的操作(ctor.super_ = superCtor;)。我试过没有它,看起来它没有那么好用。

现在我的问题是:必须使用超级属性,节点是否以某种方式使用它?或者使用ES6类扩展而不是" Node的方式" util.inherits的继承?

1 个答案:

答案 0 :(得分:0)

不,它不是nodejs使用的属性,这只是util添加的额外便利。