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

149
Visualizações
No se puede usar un método dentro de una clase

Estoy tratando de hacer una clase de matriz. La función cof() no funciona cuando la uso como método y muestra este error.
práctica: 47 TypeError no capturado: no se puede leer la propiedad 'cof' de undefined.

Pero cuando lo uso dentro del método det() como función, funciona perfectamente. ¿Puede alguien explicar por qué ocurre esto?

 class Matrix{ constructor(matrix){ this.matrix = matrix } cof(matrix = this.matrix, i, j) { let cofMat = matrix.map(row => row.filter((_, colIndex) => j !== colIndex) ) cofMat.splice(cofMat[i],1) return cofMat } det(matrix = this.matrix) { let validInput = true; //input validation let columnLength = matrix.length; matrix.forEach((row) => row.length === columnLength ? (validInput = true) : (validInput = false) ); if (!validInput) return "Input a valid n*n matrix"; // determining the matrix using 1st row. // This function is not working properly as a method function cof(matrix, i, j) { let cofMat = matrix.map(row => row.filter((_, colIndex) => j !== colIndex) ) cofMat.splice(cofMat[i],1) return cofMat } function recursiveDeterminantMatrix(matrix) { if (matrix.length === 2 && matrix[0].length === 2) { let result = matrix[0][0] * matrix[1][1] - matrix[0][1] * matrix[1][0]; return result; } else { let answer = 0; for(let i =0; i< matrix.length; i++) { let cofactor = (-1) ** i * matrix[0][i] * recursiveDeterminantMatrix(this.cof(matrix, 0, i)); answer += cofactor; }; return answer; } } return recursiveDeterminantMatrix(matrix); } } let matrix = [[1,2,3],[4,5,6],[7,8,8]]; let mat = new Matrix(matrix).det()
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Cuando se ejecuta la función recursiveDeterminantMatrix , this se evalúa como la instancia de la clase, porque no es un método, solo una función simple.

Puede guardar la instancia de la clase en una variable self para su uso adecuado en la función interna.

 det(matrix = this.matrix) { const self = this; // ... function recursiveDeterminantMatrix(matrix) { if (matrix.length === 2 && matrix[0].length === 2) { let result = matrix[0][0] * matrix[1][1] - matrix[0][1] * matrix[1][0]; return result; } else { let answer = 0; for(let i =0; i< matrix.length; i++) { let cofactor = (-1) ** i * matrix[0][i] * recursiveDeterminantMatrix(self.cof(matrix, 0, i)); answer += cofactor; }; return answer; } } return recursiveDeterminantMatrix(matrix); }

Para obtener más información sobre this palabra clave, consulte los documentos de MDN .

about 4 years ago · Juan Pablo Isaza Relatório

0

Puedes usar bind para esto.

 recursiveDeterminantMatrix(this.cof(matrix, 0, i).bind(this));
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