Movatterモバイル変換


[0]ホーム

URL:


  1. Веб-технологии для разработчиков
  2. JavaScript
  3. Справочник по JavaScript
  4. JavaScript ссылки на ошибки
  5. X.prototype.y called on incompatible type

This page was translated from English by the community.Learn more and join the MDN Web Docs community.

View in EnglishAlways switch to English

X.prototype.y called on incompatible type

Сообщение

TypeError: 'this' не является  Set объектом (EdgE)TypeError: Function.prototype.toString вызывается несовместимый объект (Firefox)TypeError: Function.prototype.bind вызывается несовместимая цель (Firefox)TypeError: Метод Set.prototype.add called вызывается несовместимый приёмник undefined (Chrome)TypeError: Bind должен вызываться для функции(Chrome)

Тип ошибки

TypeError

Что пошло не так?

При возникновении этой ошибки вызывается функция (для данного объекта) с типом this, не соответствующим типу, ожидаемому функцией.

Эта проблема может возникнуть при использованииFunction.prototype.call() илFunction.prototype.apply() методы и предоставление аргумента this, который не имеет ожидаемого типа.

Эта проблема также может возникнуть при предоставлении функции (хранящейся в объекте) в качестве аргумента другой функции. В этом случае объект не будет целью this функции. Чтобы обойти эту проблему, необходимо либо предоставить лямбда-код, который выполняет вызов, либо использоватьFunction.prototype.bind() функция для принудительной передачи аргумента this ожидаемому объекту.

Примеры

Неправильные

js
var mySet = new Set();["bar", "baz"].forEach(mySet.add);// mySet.add is a function, but "mySet" is not captured as this.var myFun = function () {  console.log(this);};["bar", "baz"].forEach(myFun.bind);// myFun.bind is a function, but "myFun" is not captured as this.

Правильные

js
var mySet = new Set();["bar", "baz"].forEach(mySet.add.bind(mySet));// This works due to binding "mySet" as this.var myFun = function () {  console.log(this);};["bar", "baz"].forEach((x) => myFun.bind(x));// This works using the "bind" function. It creates a lambda forwarding the argument.

Смотрите также

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp