26.02.2018, 21:23
|
|
Профессор
|
|
Регистрация: 07.03.2011
Сообщений: 1,127
|
|
Похоже тут нужен КЕП.
1. Свойство глобального объекта Window это ссылка на глобальный объект.
2. Глобальный объект это глобальный объект.
2.1 В JavaScript есть наследование. Любой объектный тип данных наследует свойства у Object.
2.2 Так как глобальный объект это объект то у него могут быть свойства. (null, undefined).
Глобальный объект это обычно простой экземпляр Object который расширяется специальными свойствами описанными в спецификации. Нужен он для того чтобы было возможно организовать контекст исполнения (области видимости для функций) т.е. если грубо на пальцах это место(объект) где хранятся переменные т.е реализует механизм сохранения и обращения к данным. Данные не могут висеть в воздухе нужен механизм(правила, соглашение) для того что обратится к ним. Глобальный объект как раз и служит набором правил по сохранению и использованию данных.
Rashid6 похоже думает что "Object" ,"window" и "Глобальный объект" это разные типы данных (классы как в C#)
На самом деле window это идентификатор хранящий ссылку на "Глобальный объект" который является экземпляром "Object".
|
|
26.02.2018, 21:24
|
Профессор
|
|
Регистрация: 07.11.2013
Сообщений: 4,662
|
|
Сообщение от Rashid6
|
Правильно я понимаю или Глобальный объект не связан с остальными объектами ?
|
В принципе правильно, актуальная спецификация http://www.ecma-international.org/ec...-global-object
Сообщение от Rashid6
|
тогда почему window ссылается в конечном итоге на Object ?
|
Это не важно, какой объект выше по иерархии __proto__, в спецификации вообще написано, что зависит от реализации, "The value of the [[Prototype]] internal slot of the global object is implementation-dependent."
Глобальный объект - это просто объект, структура данных, свойства которого являются глобальными идентификаторами, "... an associated global object whose properties provide some of the global environment's identifier bindings.", http://www.ecma-international.org/ec...#global-object
Ну а ссылка на глобальный объект может называться по разному, в браузерах это window, в node.js это global, в wsh вообще никак не называется, доступно через this. Про значение this в глобальном пространстве ничего не нашел, кроме этого "[[GlobalThisValue]] - The value returned by this in global scope. Hosts may provide any ECMAScript Object value." http://www.ecma-international.org/ec....html#table-18, прямо не написано что это ссылка на глобальный объект, остается только догадываться.
|
|
26.02.2018, 22:30
|
Профессор
|
|
Регистрация: 07.11.2013
Сообщений: 4,662
|
|
Rashid6,
Еще хотел сказать, что все эти window, document, ajax и тд, это не часть ECMAScript, это отдельные стандарты https://www.w3.org/standards/webdesign/script.
|
|
28.02.2018, 11:04
|
Новичок на форуме
|
|
Регистрация: 26.02.2018
Сообщений: 8
|
|
Сообщение от MallSerg
|
Похоже тут нужен КЕП.
1. Свойство глобального объекта Window это ссылка на глобальный объект.
2. Глобальный объект это глобальный объект.
2.1 В JavaScript есть наследование. Любой объектный тип данных наследует свойства у Object.
2.2 Так как глобальный объект это объект то у него могут быть свойства. (null, undefined).
Глобальный объект это обычно простой экземпляр Object который расширяется специальными свойствами описанными в спецификации. Нужен он для того чтобы было возможно организовать контекст исполнения (области видимости для функций) т.е. если грубо на пальцах это место(объект) где хранятся переменные т.е реализует механизм сохранения и обращения к данным. Данные не могут висеть в воздухе нужен механизм(правила, соглашение) для того что обратится к ним. Глобальный объект как раз и служит набором правил по сохранению и использованию данных.
Rashid6 похоже думает что "Object" ,"window" и "Глобальный объект" это разные типы данных (классы как в C#)
На самом деле window это идентификатор хранящий ссылку на "Глобальный объект" который является экземпляром "Object".
|
Во спасибо, да я думал как классы. Теперь понятно что window это Глобальный объект, и у него не должно быть конструктора, ссылается на объект - потому что сам window это объект. Все логично, всем спасибо!
Последний раз редактировалось Rashid6, 28.02.2018 в 11:11.
|
|
28.02.2018, 11:10
|
Новичок на форуме
|
|
Регистрация: 26.02.2018
Сообщений: 8
|
|
Ах да, это я понял. Только вот:
В глобальном объекте window столько объектов, это получается все нужно знать веб программисту, ну фронтендеру, или как там ? Это реально вообще ?
|
|
28.02.2018, 20:59
|
Профессор
|
|
Регистрация: 07.11.2013
Сообщений: 4,662
|
|
Rashid6,
По необходимости конечно, всё знать не реально, но основы хотя бы знать надо, дальше пойдут фреймворки, в общем учиться придется постоянно
|
|
01.03.2018, 08:44
|
Новичок на форуме
|
|
Регистрация: 26.02.2018
Сообщений: 8
|
|
Сообщение от Rise
|
Rashid6,
По необходимости конечно, всё знать не реально, но основы хотя бы знать надо, дальше пойдут фреймворки, в общем учиться придется постоянно
|
Ну основы я вроде как учу это EcmaScript и DOM в основном далее BOM.
А вот фремверки это что, не понимаю для чего они нужны, почему в самом Js писать нельзя а именно делать проекты на фремверках ?
Я вот понимаю чем занимаются верстальщики допустим, а чем занимаются те люди которые знают фреймверки, то есть настоящие фронтенд разработчики ?
Цитата:
|
Как говорил товарищ Ленин - "Учится, учится, и ещё раз учится."
|
Последний раз редактировалось Rashid6, 01.03.2018 в 08:47.
|
|
01.03.2018, 11:43
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
Rashid6,
Сообщение от Rashid6
|
Учится, учится, и ещё раз учится
|
В порядке учебы:
Учит ься, учит ься, и ещё раз учит ься
Русский - это тоже язык, ничем не хуже языков программирования. Несоблюдение орфографии изменяет смысл.
Сообщение от Rashid6
|
А вот фремверки это что, не понимаю для чего они нужны, почему в самом Js писать нельзя
|
Можно, но зачем заново самому писать то, что уже написано - и хорошо написано? Фреймворки - это библиотеки очень полезных вещей
|
|
|
|