This repository has been archived on 2020-11-02. You can view files and clone it, but cannot push or open issues or pull requests.
TripSit_Suite/node_modules/unherit/index.js
2020-11-01 22:46:04 +00:00

46 lines
888 B
JavaScript

'use strict'
var xtend = require('xtend')
var inherits = require('inherits')
module.exports = unherit
// Create a custom constructor which can be modified without affecting the
// original class.
function unherit(Super) {
var result
var key
var value
inherits(Of, Super)
inherits(From, Of)
// Clone values.
result = Of.prototype
for (key in result) {
value = result[key]
if (value && typeof value === 'object') {
result[key] = 'concat' in value ? value.concat() : xtend(value)
}
}
return Of
// Constructor accepting a single argument, which itself is an `arguments`
// object.
function From(parameters) {
return Super.apply(this, parameters)
}
// Constructor accepting variadic arguments.
function Of() {
if (!(this instanceof Of)) {
return new From(arguments)
}
return Super.apply(this, arguments)
}
}