Estoy tratando de acceder a la longitud de una matriz que hice dentro de una función. ¿Cómo uso this
para acceder a él?
Aquí está mi código:
let hashtable = new Arrary(50) // create a hashfunction let gethash = (key)=>{ // make sure all value passed in are strings let keyStr = key.toString(); let sum = 0 for (let i = 0; i < keyStr.length; i++) { sum =+ keyStr.charAt(i) } return sum % this.hashtable.length }
Estoy aprendiendo hashmaps en estructuras de datos y algoritmos. Me gustaría usar la longitud de la tabla hash para garantizar que mi función hash se encuentre entre el tamaño de la matriz.
¿No funciona sin la palabra clave this
?
let hashtable = new Arrary(50) // create a hashfunction let gethash = (key)=>{ // make sure all value passed in are strings let keyStr = key.toString(); let sum = 0 for (let i = 0; i < keyStr.length; i++) { sum =+ keyStr.charAt(i) } return sum % hashtable.length }
No está accediendo a algo vinculado a una clase u objeto, por lo que debería poder tratarlo como una variable normal.
Más sobre this
palabra clave:
En la mayoría de los casos, el valor de esto está determinado por cómo se llama a una función (enlace en tiempo de ejecución). No se puede establecer por asignación durante la ejecución y puede ser diferente cada vez que se llama a la función. ES5 introdujo el método bind() para establecer el valor de this de una función independientemente de cómo se llame, y ES2015 introdujo funciones de flecha que no proporcionan su propio enlace this (conserva el valor this del contexto léxico adjunto).