Movatterモバイル変換


[0]ホーム

URL:


  1. Веб-технологии для разработчиков
  2. JavaScript
  3. Справочник по JavaScript
  4. Стандартные встроенные объекты
  5. Function
  6. Function.prototype.call()

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

View in EnglishAlways switch to English

Function.prototype.call()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨июль 2015 г.⁩.

Сводка

Методcall() вызывает функцию с указанным значениемthis и индивидуально предоставленными аргументами.

Примечание:Хотя синтаксис этой функции практически полностью идентичен функцииapply(), фундаментальное различие между ними заключается в том, что функцияcall() принимаетсписок аргументов, в то время, как функцияapply()- одиночный массив аргументов.

Синтаксис

fun.call(thisArg[, arg1[, arg2[, ...]]])

Параметры

thisArg

Значениеthis, предоставляемое для вызова функцииfun. Обратите внимание, чтоthis может не быть реальным значением, видимым этим методом: если метод является функцией внестрогом режиме, значенияnull иundefined будут заменены глобальным объектом, а примитивные значения будут упакованы в объекты.

arg1, arg2, ...

Аргументы для объекта.

Описание

Вы можете присваивать различные объектыthis при вызове существующей функции.this ссылается на текущий объект, вызвавший объект. С помощьюcall вы можете написать метод один раз, а затем наследовать его в других объектах, без необходимости переписывать метод для каждого нового объекта.

Примеры

Пример: использованиеcall для связи конструкторов объекта в цепочку

Вы можете использовать методcall для объединения в цепочкуконструкторов объекта, как в Java. В следующем примере для объекта продуктаProduct объявлен конструктор с двумя параметрами, названиемname и ценойprice. Продукт инициализирует свойстваname иprice, а специализированные функции определяют ещё категориюcategory.

js
function Product(name, price) {  this.name = name;  this.price = price;  if (price < 0) {    throw RangeError(      "Нельзя создать продукт " + this.name + " с отрицательной ценой",    );  }}function Food(name, price) {  Product.call(this, name, price);  this.category = "еда";}Food.prototype = Object.create(Product.prototype);function Toy(name, price) {  Product.call(this, name, price);  this.category = "игрушка";}Toy.prototype = Object.create(Product.prototype);var cheese = new Food("фета", 5);var fun = new Toy("робот", 40);

Пример: использованиеcall для вызова анонимной функции

В этом чисто искусственном примере, мы создаём анонимную функцию и используемcall для вызова её на каждом элементе массива. Главная задача анонимной функции здесь — добавить функцию печати в каждый объект, способную напечатать правильный индекс объекта в массиве. Передача объекта в качестве значенияthis не является острой необходимостью, но мы делаем это в целях объяснения.

js
var animals = [  { species: "Лев", name: "Король" },  { species: "Кит", name: "Фэйл" },];for (var i = 0; i < animals.length; i++) {  (function (i) {    this.print = function () {      console.log("#" + i + " " + this.species + ": " + this.name);    };    this.print();  }).call(animals[i], i);}

Спецификации

Specification
ECMAScript® 2026 Language Specification
# sec-function.prototype.call

Совместимость с браузерами

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

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp