Значение `__proto__` функции равно` Function.prototype`? - PullRequest
0 голосов
/ 11 января 2020

Запуск следующего кода в Node.js (через repl.it ) дает противоречивые результаты:

function F() {}

F.__proto__ == Function.prototype

Почему это иногда приводит к true, а иногда false? Есть ли правильный ответ?

1 Ответ

2 голосов
/ 11 января 2020

function F() {} создает объект , называемый F, то есть instanceof Function. Этот экземпляр объекта имеет ссылку на прототип к Function.prototype объекту. Эта ссылка не исправлена, вы можете изменить прототип объекта после его создания.

function F() {}

console.log('original F:', Object.getPrototypeOf(F) === Function.prototype);

Object.setPrototypeOf(F, {});

console.log('after prototype change:', Object.getPrototypeOf(F) === Function.prototype);
...