Показать сообщение отдельно
  #11 (permalink)  
Старый 07.01.2021, 19:44
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,743

А откуда у нашей fun взялся метод apply?
Все оттуда же. Функция - объект
Любая функция создается с помощью (неявного) вызова new Function()
Мы написали
function fun() {...}

На самом деле получили
var fun = new Function(....)


Function - встроенная функция JS. Как и любая функция она содержит свойство prototype
Function.prototype = {
   constructor: Function,
// и прочие методы
   apply: function () {...},
   call: function () {...},
   bind: function () {...},
.....
}


Когда вызвался fun = new Function (...)
как и для всех объектов произошло
fun.__proto__ = Function.prototype;

Поэтому методы apply, call, bind... стали доступны для fun
Ответить с цитированием