| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Errors/Called_on_incompatible_type | [Back] [Original] |
Get to know MDN better
Cette page a t traduite partir de l'anglais par la communaut. Vous pouvez contribuer en rejoignant la communaut francophone sur MDN Web Docs.
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)
TypeError
Lorsque cette erreur est leve, cela signifie qu'une fonction (d'un objet donn) est appel avec une valeur this qui ne correspond pas au type attendu par la fonction.
Cela peut se produire lorsqu'on utilise les mthodes Function.prototype.call() ou Function.prototype.apply() et qu'on fournit un argument this 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 valeur this pour la fonction. Pour contourner ce problme, on peut fournir une fonction lambda qui effectue l'appel ou utiliser la fonction Function.prototype.bind() afin que this soit l'objet attendu.
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.
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
// crer une fonction lambda qui propage
// l'argument.
Cette page a t modifie le 3 aot 2023 par les contributeurices du MDN.
Certaines parties de ce contenu sont protges par le droit d'auteur 19982026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.
| Web Proxy Viewer | New URL | Original Page |