coffeescript中的util.inherits

时间:2014-07-01 07:27:08

标签: javascript node.js coffeescript

我正在使用Node.js服务器,我正在使用咖啡脚本进行开发。

这对咖啡脚本有何影响?

EventEmitter = require('events').EventEmitter

util.inherits(Connector, EventEmitter)
是吗?

EventEmitter = require('events').EventEmitter

class @Connector extends EventEmitter

我基本上是在尝试将emit添加到Connector。 类似的东西:

this.emit('online')

1 个答案:

答案 0 :(得分:2)

是的,extendsutil.inherits类似。

Implementation of util.inherits

inherits = function(ctor, superCtor) {
    ctor.super_ = superCtor;
    ctor.prototype = Object.create(superCtor.prototype, {
        constructor: {
            value: ctor,
            enumerable: false,
            writable: true,
            configurable: true
        }
    });
};

Compilation of extends

var __hasProp = {}.hasOwnProperty,
__extends = function(child, parent) {
    for (var key in parent) {
        if (__hasProp.call(parent, key))
            child[key] = parent[key];
    }
    function ctor() {
        this.constructor = child;
    }
    ctor.prototype = parent.prototype;
    child.prototype = new ctor();
    child.__super__ = parent.prototype;
    return child;
};

function Connector() {
    return Connector.__super__.constructor.apply(this, arguments);
}
__extends(Connector, EventEmitter);

区别在于:

  • 子构造函数的super属性的确切名称
  • util.inherits使用Object.createextends使用与ES3兼容的版本
  • util.inhirits使子构造函数的constructor属性不可枚举
  • extend份"静态"子构造函数的父构造函数的属性
  • 如果没有为该类提供extendsconstructor关键字会自动calls the super constructor