当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Node.js util.inherits(constructor, superConstructor)用法及代码示例


util.inherits(constructor, superConstructor)

历史
版本变化
v5.0.0

constructor 参数现在可以引用 ES6 类。

v0.3.0

添加于:v0.3.0

Stability: 3 - 旧版:改用 ES2015 类语法和 extends 关键字。

参数

不鼓励使用util.inherits()。请使用 ES6 classextends 关键字来获得语言级别的继承支持。另请注意,这两种样式是 semantically incompatible

将原型方法从一个constructor 继承到另一个。 constructor 的原型将设置为从 superConstructor 创建的新对象。

这主要在 Object.setPrototypeOf(constructor.prototype, superConstructor.prototype) 之上添加了一些输入验证。作为额外的便利,superConstructor 可以通过constructor.super_ 属性访问。

const util = require('node:util');
const EventEmitter = require('node:events');

function MyStream() {
  EventEmitter.call(this);
}

util.inherits(MyStream, EventEmitter);

MyStream.prototype.write = function(data) {
  this.emit('data', data);
};

const stream = new MyStream();

console.log(stream instanceof EventEmitter); // true
console.log(MyStream.super_ === EventEmitter); // true

stream.on('data', (data) => {
  console.log(`Received data: "${data}"`);
});
stream.write('It works!'); // Received data: "It works!"

使用 classextends 的 ES6 示例:

const EventEmitter = require('node:events');

class MyStream extends EventEmitter {
  write(data) {
    this.emit('data', data);
  }
}

const stream = new MyStream();

stream.on('data', (data) => {
  console.log(`Received data: "${data}"`);
});
stream.write('With ES6');

相关用法


注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品 util.inherits(constructor, superConstructor)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。