Правильно ли я представляю фундамент ECMAScript ? поправьте меня пожалуйста.
Вот когда запускается EcmaScript, создается:
Глобальный объект, внутри которого есть методы (Date, Object, Function, Number, String, и т.д.). из этих методов создаются уже объекты (Date, Object, Function, Number, String, и т.д.), которые мы используем ? Правильно я понимаю или Глобальный объект не связан с остальными объектами ? |
В начале есть Object. Всё остальное его наследники.)
|
Но создаваемые объекты ведь сохраняются в глобальном объекте а не в Object.
Например: var x = 1; this.x Получается, Object стоит предпоследним в этой иерархии ? |
Глобальный объект называется window. Иногда он может совпадать с this.
x = 'global x'; alert('window: ' + window.x); alert('this: ' + this.x); alert('window.Object: ' + window.Object); alert('window.Date: ' + (new window.Date())); console.log(window); |
тогда почему window ссылается в конечном итоге на Object ?
window __proto__:Window __proto__:WindowProperties __proto__:EventTarget __proto__:Object получается глобальный объект не window а Object, но прочитав спецификацию ecmascript будет ясно что Object не глобальный. |
Это в каком браузере? В хроме и фф window.__proto__.Object - undefined
|
Rashid6,
у тебя полная неразбериха в голове. Объяснять в двух словах тут не имеет смысла. Советую вдумчиво и неторопливо раскурить местный учебник https://learn.javascript.ru/ , особенно часть первую. |
У меня все как раз таки норм все, непонятно только почему window стал глобальным объектом у Вас, когда в спецификации глобальный объект - это "Глобальный объект":
http://es5.javascript.ru/x15.1.html#x15.1 Свойства null, undefined тогда в каком объекте ? |
![]() |
Ну да, window - это объект.
Цитата:
|
Похоже тут нужен КЕП.
1. Свойство глобального объекта Window это ссылка на глобальный объект. 2. Глобальный объект это глобальный объект. 2.1 В JavaScript есть наследование. Любой объектный тип данных наследует свойства у Object. 2.2 Так как глобальный объект это объект то у него могут быть свойства. (null, undefined). Глобальный объект это обычно простой экземпляр Object который расширяется специальными свойствами описанными в спецификации. Нужен он для того чтобы было возможно организовать контекст исполнения (области видимости для функций) т.е. если грубо на пальцах это место(объект) где хранятся переменные т.е реализует механизм сохранения и обращения к данным. Данные не могут висеть в воздухе нужен механизм(правила, соглашение) для того что обратится к ним. Глобальный объект как раз и служит набором правил по сохранению и использованию данных. Rashid6 похоже думает что "Object" ,"window" и "Глобальный объект" это разные типы данных (классы как в C#) На самом деле window это идентификатор хранящий ссылку на "Глобальный объект" который является экземпляром "Object". |
Цитата:
Во спасибо, да я думал как классы. Теперь понятно что window это Глобальный объект, и у него не должно быть конструктора, ссылается на объект - потому что сам window это объект. Все логично, всем спасибо! |
Цитата:
В глобальном объекте window столько объектов, это получается все нужно знать веб программисту, ну фронтендеру, или как там ? Это реально вообще ? |
Цитата:
А вот фремверки это что, не понимаю для чего они нужны, почему в самом Js писать нельзя а именно делать проекты на фремверках ? Я вот понимаю чем занимаются верстальщики допустим, а чем занимаются те люди которые знают фреймверки, то есть настоящие фронтенд разработчики ? Цитата:
|
Rashid6,
Цитата:
Учиться, учиться, и ещё раз учиться Русский - это тоже язык, ничем не хуже языков программирования. Несоблюдение орфографии изменяет смысл. Цитата:
|
Часовой пояс GMT +3, время: 02:27. |