[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Errors/Not_a_function [Back]  [Original]

TypeError: "x" is not a function - JavaScript | MDN

Esta pgina foi traduzida do ingls pela comunidade. Saiba mais e junte-se comunidade MDN Web Docs.

View in English Always switch to English

TypeError: "x" is not a function

Mensagem

TypeError: Object doesn't support property or method {x} (Edge)
TypeError: "x" is not a function

In this article

Tipo do erro

TypeError.

O que deu errado?

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:

Exemplos

Um erro de digitao no nome da funo

Nesse caso, que ocorre com bastante frequncia, existe um erro de digitao no nome do mtodo:

js
var x = document.getElementByID("foo");
// TypeError: document.getElementByID is not a function

O nome correto da funo getElementById:

js
var x = document.getElementById("foo");

Funo chamada no objeto errado

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.

js
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:

js
var numbers = [1, 4, 9];

numbers.map(function (num) {
  return num * 2;
});

// Array [2, 8, 18]

Funo compartilha o nome com uma propriedade pr-existente

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.

js
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

js
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' }

Veja tambm


Web Proxy Viewer  |  New URL  |  Original Page