| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Errors/Not_a_function | [Back] [Original] |
Get to know MDN better
Esta pgina foi traduzida do ingls pela comunidade. Saiba mais e junte-se comunidade MDN Web Docs.
TypeError: Object doesn't support property or method {x} (Edge)
TypeError: "x" is not a function
Houve a tentativa de obter um valor de uma funo, mas o valor no exatamente uma funo. Algum cdigo espera que voc fornea uma funo, mas no foi o que acontenceu.
Talvez exista um erro de digitao no nome da funo? Talvez o objeto no qual voc est chamando o mtodo no tenha essa funo? Por exemplo, objetos no JavaScript no tem a funo map, mas o objeto Array tem.
Existem vrias funes internas que precisam de uma funo (callback). Voc ter que prover uma funo para obter esses mtodos funcionando corretamente:
Quando estiver trabalhando com os objetos Array ou TypedArray:
Nesse caso, que ocorre com bastante frequncia, existe um erro de digitao no nome do mtodo:
var x = document.getElementByID("foo");
// TypeError: document.getElementByID is not a function
O nome correto da funo getElementById:
var x = document.getElementById("foo");
Para alguns mtodos, necessrio fornecer a funo (callback) que ir funcionar apenas em objetos especficos. Nesse exemplo, utilizado Array.prototype.map() que ir funcionar apenas em objetos Array.
var obj = { a: 13, b: 37, c: 42 };
obj.map(function (num) {
return num * 2;
});
// TypeError: obj.map is not a function
Ao invs disso, use uma array:
var numbers = [1, 4, 9];
numbers.map(function (num) {
return num * 2;
});
// Array [2, 8, 18]
Algumas vezes, ao criar uma classe, pode haver uma propriedade e funo com os mesmos nomes. Ao chamar a funo, o compilador no consegue identificar a funo.
var Dog = function () {
this.age = 11;
this.color = "black";
this.name = "Ralph";
return this;
};
Dog.prototype.name = function (name) {
this.name = name;
return this;
};
var myNewDog = new Dog();
myNewDog.name("Cassidy"); //Uncaught TypeError: myNewDog.name is not a function
Ento, use um nome diferente para a propriedade
var Dog = function () {
this.age = 11;
this.color = "black";
this.dogName = "Ralph"; //Using this.dogName instead of .name
return this;
};
Dog.prototype.name = function (name) {
this.dogName = name;
return this;
};
var myNewDog = new Dog();
myNewDog.name("Cassidy"); //Dog { age: 11, color: 'black', dogName: 'Cassidy' }
This page was last modified on 24 de jun. de 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 |