Что такое конструктор функций в Node.js?

В браузере (по крайней мере, как минимум) функции являются экземплярами Function

setTimeout instanceof Function
// true

Однако в node они не

setTimeout instanceof Function
// false

Итак, что такое конструктор setTimeout, если не Function?

Ответ 1

Кажется, что конструктор Function, но один из другого царства.

Если вы запустите этот код

console.log(Object.getOwnPropertyNames(setTimeout.constructor.prototype));

вы получаете массив с типичными методами Function.prototype, такими как call, apply и bind.

Итак, я думаю, это несколько похоже на то, что происходит в веб-браузерах, когда вы занимаете setTimeout из iframe:

var iframe = document.createElement('iframe');
document.body.appendChild(iframe);
var win = iframe.contentWindow;
console.log(win.setTimeout instanceof Function);     // false
console.log(win.setTimeout instanceof win.Function); // true