Necesito lograr el siguiente comportamiento: Entonces, al crear una instancia de clase a través de new , recibí una cadena, no un objeto de clase. ¿Cómo implementar esto? ¿Es posible?
Por ejemplo
class ExampleClass{ constructor(str) { this.str = str; } // some code I guess... } const str = new ExampleClass('example') console.log(str) // 'example'Prueba esto:
class ExampleClass extends String {}Mientras usa Class con new it, cree esta instancia internamente y devuélvala
CÓMO FUNCIONA INTERNAMENTE
let ExampleClass = function(_str){ //this = Object.create(ExampleClass.prototype); this.str = _str // return this; } str = new ExampleClass('EXAMPLE');Buena práctica: puede crear una función de ayuda o captadores en lugar de cambiar la implementación
class ExampleClass{ constructor(str) { this._str = str; } // some code... get str(){return this._str;} set str(str){this._str = str;} helperFetchStr(){ return this._str;} } new ExampleClass('EXAMPLE1').str; new ExampleClass('EXAMPLE2').helperFetchStr();Extendiendo la clase String. Aquí, el prototipo será de cadena, lo que le permitirá realizar todas las operaciones de cadena directamente en str
let similar = new String("EJEMPLO")
class ExampleClass extends String { constructor(str) { super(str); } // some code... } const str = new ExampleClass('EXAMPLE'); //console.log(str.{STRING_OPERATIONS})