當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。