Node.js – util.inherits() 方法
该方法基本上将方法从一个构造继承到另一个构造。这个原型将被设置为来自superConstructor的新对象。util.inherits()
通过这样做,我们主要可以在Object.setPrototypeOf(constructor.prototype,superConstructor.prototype)的顶部添加一些验证。
语法
util.inherits(constructor, superConstructor)
参数
参数说明如下——
构造函数- 这是一个函数类型输入,保存用户想要继承的构造函数的原型。
superConstructor- 这是将用于添加和验证输入验证的函数。
示例1
创建一个文件“inherits.js”并复制以下代码片段。创建文件后,使用命令“nodeinherits.js”运行此代码。
//util.inherit()示例 //导入util模块 const util = require('util'); const EventEmitter = require('events'); //定义下面的构造函数 function Stream() { EventEmitter.call(this); } //继承流构造函数 util.inherits(Stream, EventEmitter); //使用一些数据为构造函数创建原型 Stream.prototype.write = function(data) { this.emit('data', data); }; //创建一个新的流构造函数 const stream = new Stream(); //检查流是否为instanceOfEventEmitter console.log(stream instanceof EventEmitter); //真的 console.log(Stream.super_ === EventEmitter); //真的 //打印数据 stream.on('data', (data) => { console.log(`Data Received: "${data}"`); }); //在流中传递数据 stream.write('Its working... Created the constructor prototype!');输出结果
C:\home\node>> node inherits.js true true Dta Received: "It's working... Created the constructor prototype!"
示例2
让我们再看一个例子
//util.inherits()示例 // Importing the util & events module const util = require('util'); const { inspect } = require('util'); const emitEvent = require('events'); //定义类以发出流数据 class streamData extends emitEvent { write(stream_data) { //这将发出数据流 this.emit('stream_data', stream_data); } } //创建流的新实例 const manageStream = new streamData('default'); console.log("1.", inspect(manageStream, false, 0, true)) console.log("2.", streamData) manageStream.on('stream_data', (stream_data) => { //流后打印写语句 console.log("3.", `Data Stream Received: "${stream_data}"`); }); //在控制台上写 manageStream.write('Inheriting the constructor & checking from superConstructor');输出结果
C:\home\node>> node inherits.js 1. streamData { _events: [Object: null prototype] {}, _eventsCount: 0, _maxListeners: undefined, [Symbol(kCapture)]: false } 2. [class streamData extends EventEmitter] 3. Data Stream Received: "Inheriting the constructor & checking from superConstructor"