[Node][Unit36] 使用 util.inherits 來繼承 EventEmitter 的方法
const util = require('util')
function Person (firstName, lastName) {
this.firstName = firstName || 'Aaron'
this.lastName = lastName || 'Chen'
}
Person.prototype.greet = function () {
console.log('Hello, ' + this.firstName + ' ' + this.lastName)
}
function policeMan () {
console.log('this', this)
Person.call(this)
/**
* 等同於執行了
* this.firstName = 'Aaron'
* this.lastName = 'Chen
*/
this.badgeNumber = '1234'
}
util.inherits(policeMan, Person)
let officer = new policeMan()
console.log('officer', officer)
officer.greet()
'use strict'
const EventEmitter = require('events')
const util = require('util')
class Greetr {
constructor () {
EventEmitter.call(this)
this.greeting = 'someone greet'
}
greet () {
console.log(this.greeting)
this.emit('greet')
}
}
util.inherits(Greetr, EventEmitter)
const greetr1 = new Greetr()
greetr1.on('greet', function () {
console.log('Hello world')
})
greetr1.greet()
// 在 eventEmitter 中代入參數
const EventEmitter = require('events')
const util = require('util')
function Greetr () {
this.greeting = 'Hello World!!'
}
// inherits(constructor, superConstructor), 讓 constructor 繼承 superConstructor
util.inherits(Greetr, EventEmitter)
Greetr.prototype.greet = function (data) {
console.log(this.greeting)
this.emit('greet', data)
}
const greetr1 = new Greetr()
greetr1.on('greet', function (data) {
console.log('Someone greeted' + ': ' + data)
})
greetr1.greet('Nice')
// 使用 util.inherits 來繼承 EventEmitter 的方法
const EventEmitter = require('events')
const util = require('util')
function Greetr () {
// 如果我們想要完整繼承 EventEmitter 中的屬性
EventEmitter.call(this)
this.greeting = 'someone greet'
}
// inherits(constructor, superConstructor), 讓 constructor 繼承 superConstructor
util.inherits(Greetr, EventEmitter)
Greetr.prototype.greet = function () {
console.log(this.greeting)
this.emit('greet')
}
const greetr1 = new Greetr()
greetr1.on('greet', function () {
console.log('Hello world')
})
greetr1.greet()