Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.02.2016, 15:03
Новичок на форуме
Отправить личное сообщение для Cepairda Посмотреть профиль Найти все сообщения от Cepairda
 
Регистрация: 10.02.2016
Сообщений: 1

Как создается function Function(){} ?
function Function(){}// new Function -> Function.__proto__ = Function.prototype; Function.prototype = {__proto__: Object.prototype};

Это единственная Функция-конструктор у которой ее prototype == __proto__. Как это получается не понятно. Со всеми остальными разобрался, к примеру Array:

Создается функция-конструктор(при это происходит создание через new Function). В Array.__proto__ записывается = Function.prototype; Вот собственно и все.
Но чепуха получается с Function.
function Function(){}// new Function -> Function.__proto__ = Function.prototype; Function.prototype = {__proto__: Object.prototype};
Получается еще не создался, но при создании уже записывает в __proto__ свой же Function.prototype, которого еще как бы нет, как так ?

Попытаюсь изложить еще более ясно:

в самом языке есть функция-конструктор function Function(){}

Теперь суть следующая, когда мы пишем var arr = [2,3];на самом деле на уровне языка это var arr = new Array(2,3);
Когда мы пишем var obj = {};то для языка это var obj = new Object();

когда мы создаем функцию, например function Test(){}, то для языка это new Function();

new Array(2,3);
Array - функция-конструктор языка;имеет вид как и все функции
function Array(){}

Создается с помощью как и все функции с помощью функции-конструктора new Function
И при создании new Function, в Array.__proto__ = Function.prototype

Все функции создается с помощью new Function
function Object(){}, function Array(){}, function Number(){}, function String(){}, все функции в общем и свои и встроенные в сам язык так создаются

new Function(), здесь Function - это функция - конструктор, то есть тоже функция имеющая вид function Function(){}
Вот тут то и наступает тупик. Все функции создается с помощью new Function
Но как может создаться с помощью new Function сам function Function, Function еще не существует, его не создали, нет такой функции конструктора
Некоторые говорят, что это особенность языка, и оно создается другим образом, но как я не нашел ответ
new Function не может создать function Function, по той причини что new Function(ЕГО нет, мы его и создаем)
Мы не можем вызвать то, чего еще нет. И да я начал склонять к тому, что это особенность языка, потому что есть очень интересный момент
Function.__proto__ == Function.prototype
Нет больше не одной встроенной функции, где такое есть. И самому такое создать невозможно.
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не работает ajax в IE xber9 jQuery 5 27.08.2013 21:04
Управление скроллом "а-ля тач" HonesT Элементы интерфейса 2 27.08.2013 14:25
Jin: И снова о наследовании tenshi Ваши сайты и скрипты 16 19.08.2013 20:30
Чем "dequeue после queue" отличается от "dequeue внутри queue". lancer jQuery 2 04.09.2012 14:47
хитросплетения Global,контекст,this,Reference kefi Общие вопросы Javascript 109 20.11.2009 23:34