| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Errors/Not_a_function | [Back] [Original] |
Get to know MDN better
Esta pgina ha sido traducida del ingls por la comunidad. Aprende ms y nete a la comunidad de MDN Web Docs.
TypeError: "x" is not a function
Se ha intentado llamar a un elemento o valor como si fuera una funcin, pero no lo era. El cdigo esperaba que hubiera una funcin implementada, pero no la ha encontrado.
Est bien escrito el nombre de la funcin?El objeto sobre el que ests haciendo la llamada tiene ese mtodo implementado realmente? Por ejemplo, los objetos tipo Array tienen implementada la funcin map, pero el resto de tipos no la tienen.
Hay muchas funciones propias de Javascript (built-in) que necesitan una funcin de callback, por lo que tienes que pasar esa funcin como parmetro para que estos mtodos funcionen correctamente.
Cuando se usen objetos Array o TypedArray:
En este caso, que ocurre con mucha frecuencia, el nombre de la funcin est mal escrito:
var x = document.getElementByID("foo");
// TypeError: document.getElementByID is not a function
El nombre correcto de la funcin es getElementById:
var x = document.getElementById("foo");
Puede que el mtodo que queramos usar no est implementado en el tipo de objeto que estemos usado. En este ejemplo, queremos usar el mtodo map, que recibe una funcin de callback como argumento, pero solo lo tienen los objetos Array.
var obj = { a: 13, b: 37, c: 42 };
obj.map(function (num) {
return num * 2;
});
// TypeError: obj.map is not a function
Como obj es un diccionario (parejas clave/valor), no tiene mtodo map y se produce el error. Para evitarlo, hay que usar un Array:
var numeros = [1, 4, 9];
numeros.map(function (num) {
return num * 2;
});
// Array [ 2, 8, 18 ]
A veces, al hacer una clase, puede tener una propiedad y una funcin con el mismo nombre. Al llamar a la funcin, el compilador piensa que la funcin deja de existir.
var Perro = function () {
this.edad = 11;
this.color = "negro";
this.nombre = "Rafael";
return this;
};
Perro.prototype.nombre = function (nombre) {
this.nombre = nombre;
return this;
};
var miNuevoPerro = new Perro();
miNuevoPerro.nombre("Lilly"); //Uncaught TypeError: myNewDog.name is not a function
Utilice un nombre de propiedad diferente en su lugar:
var Perro = function () {
this.edad = 11;
this.color = "negro";
this.nombrePerro = "Rafael"; //Usando this.nombrePerro en vez de .nombre
return this;
};
Perro.prototype.nombre = function (nombre) {
this.nombrePerro = nombre;
return this;
};
var miNuevoPerro = new Perro();
miNuevoPerro.nombre("Lilly"); //Perro { edad: 11, color: 'negro', nombrePerro: 'Lilly' }
This page was last modified on 24 jun 2025 by MDN contributors.
Your blueprint for a better internet.
Portions of this content are 19982026 by individual mozilla.org contributors. Content available under a Creative Commons license.
| Web Proxy Viewer | New URL | Original Page |