Class

总是用 Class,取代需要 prototype 的操作。因为 Class 的写法更简洁,更易于理解。

  1. // bad
  2. function Queue(contents = []) {
  3. this._queue = [...contents];
  4. }
  5. Queue.prototype.pop = function() {
  6. const value = this._queue[0];
  7. this._queue.splice(0, 1);
  8. return value;
  9. }
  10. // good
  11. class Queue {
  12. constructor(contents = []) {
  13. this._queue = [...contents];
  14. }
  15. pop() {
  16. const value = this._queue[0];
  17. this._queue.splice(0, 1);
  18. return value;
  19. }
  20. }

使用extends实现继承,因为这样更简单,不会有破坏instanceof运算的危险。

  1. // bad
  2. const inherits = require('inherits');
  3. function PeekableQueue(contents) {
  4. Queue.apply(this, contents);
  5. }
  6. inherits(PeekableQueue, Queue);
  7. PeekableQueue.prototype.peek = function() {
  8. return this._queue[0];
  9. }
  10. // good
  11. class PeekableQueue extends Queue {
  12. peek() {
  13. return this._queue[0];
  14. }
  15. }