Рассмотрим эту функцию:
function Foo(){
var a = "3";
};
Согласно __proto__ VS. прототип в JavaScript,
Foo.__proto__ = Function.prototype
Function.prototype.__proto__ = Object.prototype
Я понял эту часть, но если я сделаю это в консоли Google Chrome:
Object.__proto__
output: ƒ () { /* native code */ }
Function.__proto__
output: ƒ () { /* native code */ }
Q1: почему они указывают на функцию? Что на самом деле представляют собой Function
и Object
и чем они отличаются друг от друга, потому что Объект на самом деле является функцией?
typeof Object
"function"
Q2: Если в JavaScript все является объектом, то почему Object
является функцией? Кроме того, как функция на самом деле реализована внутри JavaScript? Что происходит с переменными, объявленными внутри функции? Функция преобразована в объект компилятором JavaScript?
Извините, если я упускаю что-то очевидное. Я действительно смущен тем, как функция и объект реализованы в JavaScript.