// Function
function extend(obj) {
class Extended extends obj.constructor {
constructor(obj) {
super(...(Array.isArray(obj) ? obj : [obj]));
this.$ = 'something';
}
}
return new Extended(obj);
}
// Examples
const originalString = 'test';
const extendedString = extend(originalString);
String(extendedString) === originalString
extendedString.toString()
extendedString.valueOf()
extendedString.$
extendedString.constructor.prototype
const originalArray = [4, 5, 6];
const extendedArray = extend(originalArray);
JSON.stringify(extendedArray) === JSON.stringify(originalArray)
extendedArray.push(7)
extendedArray.valueOf()
extendedArray.toString()
extendedArray.$
Comments