Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. JavaScript
  3. Référence
  4. Référence des erreurs JavaScript
  5. TypeError: X.prototype.y called on incompatible type

Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in EnglishAlways switch to English

TypeError: X.prototype.y called on incompatible type

Message

TypeError: 'this' is not a Set object (Edge)TypeError: Function.prototype.toString called on incompatible object (Firefox)TypeError: Function.prototype.bind called on incompatible target (Firefox)TypeError: Method Set.prototype.add called on incompatible receiver undefined (Chrome)TypeError: Bind must be called on a function (Chrome)

Type d'erreur

TypeError

Quel est le problème ?

Lorsque cette erreur est levée, cela signifie qu'une fonction (d'un objet donné) est appelé avec une valeurthis qui ne correspond pas au type attendu par la fonction.

Cela peut se produire lorsqu'on utilise les méthodesFunction.prototype.call() ouFunction.prototype.apply() et qu'on fournit un argumentthis dont le type n'est pas celui attendu.

Cela peut également se produire quand on fournit une fonction (sous la forme d'un objet) comme argument d'une autre fonction. Dans ce cas, l'objet ne sera pas capturé comme valeurthis pour la fonction. Pour contourner ce problème, on peut fournir une fonction lambda qui effectue l'appel ou utiliser la fonctionFunction.prototype.bind() afin quethis soit l'objet attendu.

Exemples

Exemples invalides

js
var monSet = new Set();["truc", "bidule"].forEach(monSet.add);// monSet.add est une fonction mais// "monSet" n'est pas capturé en tant que this.var maFonction = function () {  console.log(this);};["truc", "bidule"].forEach(maFonction.bind);// maFonction.bind est une fonction// mais "maFonction" n'est pas capturé en tant// que this.

Exemples valides

js
var monSet = new Set();["truc", "bidule"].forEach(monSet.add.bind(monSet));// Cela fonctionne car on lie "monSet" avec this.var maFonction = function () {  console.log(this);};["truc", "bidule"].forEach((x) => maFonction.bind(x));// Cela fonctionne car on utilise// la fonction "bind" ce qui permet de// créer une fonction lambda qui propage// l'argument.

Voir aussi

Help improve MDN

Learn how to contribute

Cette page a été modifiée le par lescontributeurs du MDN.


[8]ページ先頭

©2009-2025 Movatter.jp