Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

145
Visualizações
acceda a la propiedad privada de la clase dentro del método y la función anidados?

Estoy tratando de acceder a un método llamado estado dentro de una función anidada.

 class Logger { #status = false; constructor(){ console=(function(oldCons){ return { log:function(text){ if(this.status()){ var e = new Error(); if(!e.stack){ try { throw e; } catch (e) { if(!e.stack){} } } var stack = e.stack.toString().split(/\r\n|\n/); for(var [key, step] of Object.entries(stack)){ stack[key] = step.trim(); } if(text === ''){ text = '""'; } var timeElapsed = Date.now(); var now = new Date(timeElapsed); var day = String(now.getDate()).padStart(2, '0'); var month = String(now.getMonth() + 1).padStart(2, '0'); var year = now.getFullYear(); var hours = String(now.getHours()).padStart(2, '0'); var minutes = String(now.getMinutes()).padStart(2, '0'); var secondes = String(now.getSeconds()).padStart(2, '0'); var date = year+'-'+month+'-'+day+' '+hours+':'+minutes+':'+secondes; oldCons.log('['+date+']',text);oldCons.log(stack); } }, info:function(text){ oldCons.info(text); }, warn:function(text){ oldCons.warn(text); }, error:function(text){ if(this.status()){ oldCons.error(text); } } }; }(window.console)); window.console = console; } status(){ return this.#status; } enable(){ this.#status = true; } disable(){ this.#status = false; } toggle(status = null){ if(status == null){ if(this.#status){ this.disable(); } else { this.enable(); } } else { this.#status = status; } } } const Log = new Logger();

Pero termino con un error: Uncaught TypeError: this.status is not a function . Entiendo que this generalmente se refiere a la función actual. ¿Cómo puedo acceder al método de estado en la instancia 2 dentro de las funciones en el constructor?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

this no apunta a la instancia de Logger en este caso, apunta a la propiedad de log de su objeto de retorno. Puede usar una referencia a this , como en el siguiente ejemplo self :

 class Logger { #status = false; constructor() { const self = this; console = (function(oldCons) { return { log: function(text) { if (self.status()) { var e = new Error(); if (!e.stack) { try { throw e; } catch (e) { if (!e.stack) {} } } var stack = e.stack.toString().split(/\r\n|\n/); for (var [key, step] of Object.entries(stack)) { stack[key] = step.trim(); } if (text === '') { text = '""'; } var timeElapsed = Date.now(); var now = new Date(timeElapsed); var day = String(now.getDate()).padStart(2, '0'); var month = String(now.getMonth() + 1).padStart(2, '0'); var year = now.getFullYear(); var hours = String(now.getHours()).padStart(2, '0'); var minutes = String(now.getMinutes()).padStart(2, '0'); var secondes = String(now.getSeconds()).padStart(2, '0'); var date = year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + secondes; oldCons.log('[' + date + ']', text); oldCons.log(stack); } }, info: function(text) { oldCons.info(text); }, warn: function(text) { oldCons.warn(text); }, error: function(text) { if (this.status()) { oldCons.error(text); } } }; }(window.console)); window.console = console; } status() { return this.#status; } enable() { this.#status = true; } disable() { this.#status = false; } toggle(status = null) { if (status == null) { if (this.#status) { this.disable(); } else { this.enable(); } } else { this.#status = status; } } } const Log = new Logger();

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda