SlideShare une entreprise Scribd logo
1  sur  77
Объекты в ECMAScript
youtube channel
InSimpleWords
ECMAScript is object-based: basic language and
host facilities are provided by objects, and an
ECMAScript program is a cluster of
communicating objects. In ECMAScript, an object
is a collection of zero or more properties each
with attributes that determine how each property
can be used. Properties are containers that hold
other objects, primitive values, or functions.
Объекты в ECMAScript youtube channel
InSimpleWords
ECMAScript is object-based: basic language and
host facilities are provided by objects, and an
ECMAScript program is a cluster of
communicating objects. In ECMAScript, an object
is a collection of zero or more properties each
with attributes that determine how each property
can be used. Properties are containers that hold
other objects, primitive values, or functions.
Объекты в ECMAScript youtube channel
InSimpleWords
ECMAScript is object-based: basic language and
host facilities are provided by objects, and an
ECMAScript program is a cluster of
communicating objects. In ECMAScript, an object
is a collection of zero or more properties each
with attributes that determine how each property
can be used. Properties are containers that hold
other objects, primitive values, or functions.
Объекты в ECMAScript youtube channel
InSimpleWords
ECMAScript is object-based: basic language and
host facilities are provided by objects, and an
ECMAScript program is a cluster of
communicating objects. In ECMAScript, an object
is a collection of zero or more properties each
with attributes that determine how each property
can be used. Properties are containers that hold
other objects, primitive values, or functions.
Объекты в ECMAScript youtube channel
InSimpleWords
Объекты в ECMAScript youtube channel
InSimpleWords
youtube channel
InSimpleWordsОбъекты в ECMAScript
youtube channel
InSimpleWordsОбъекты в ECMAScript
youtube channel
InSimpleWordsОбъекты в ECMAScript
Обычный объект
Экзотический объект
youtube channel
InSimpleWordsОбъекты в ECMAScript
youtube channel
InSimpleWordsОбъекты в ECMAScript
youtube channel
InSimpleWordsОбъекты в ECMAScript
An object is a collection of properties and has a single
prototype object. The prototype may be the null value.
youtube channel
InSimpleWordsОбъекты в ECMAScript
Every object created by a constructor has an
implicit reference (called the object's prototype)
to the value of its constructor's "prototype"
property. Furthermore, a prototype may have a
non-null implicit reference to its prototype, and so
on; this is called the prototype chain.
An object is a collection of properties and has a single
prototype object. The prototype may be the null value.
youtube channel
InSimpleWordsОбъекты в ECMAScript
Every object created by a constructor has an
implicit reference (called the object's prototype)
to the value of its constructor's "prototype"
property. Furthermore, a prototype may have a
non-null implicit reference to its prototype, and so
on; this is called the prototype chain.
An object is a collection of properties and has a single
prototype object. The prototype may be the null value.
youtube channel
InSimpleWordsОбъекты в ECMAScript
- Implicit reference в ECMAScript ?
- А что вообще из себя представляет
ECMAScript ?
- Кроме того, что там много текста и
умных слов …
youtube channel
InSimpleWordsОбъекты в ECMAScript
- Описывает работу с какими-то данными
(Reference, Lexical Environment … Record)
youtube channel
InSimpleWordsОбъекты в ECMAScript
- По каким-то алгоритмам
youtube channel
InSimpleWordsОбъекты в ECMAScript
- Похоже на JavaScript?
- А может это и есть JavaScript?
- EcmaScript - есть не что иное как набор
утверждений и правил, на основе
которых написаны / имплементированы
движки JavaScript (SpiderMonkey, V8 …).
- Разве это не одно и тоже?
…
youtube channel
InSimpleWordsОбъекты в ECMAScript
IMPLICIT
EXPLICIT
ECMAScript
JavaScript
VS
youtube channel
InSimpleWordsОбъекты в ECMAScript
IMPLICIT
EXPLICIT
ECMAScript
JavaScript
V8
Реализует
спецификацию,
например,
на С++
youtube channel
InSimpleWordsОбъекты в ECMAScript
youtube channel
InSimpleWordsОбъекты в ECMAScript
[[Prototype]] - ссылка на прототип объекта,
закодированная на уровне ECMAScript (C++)
prototype - обычное свойство функции
конструктора, управляемое из JavaScript,
указывающее на объект, который будет
устанавливаться новорожденным объектам
от этой функции по ссылке [[Prototype]]
youtube channel
InSimpleWordsОбъекты в ECMAScript
__proto__ - ссылка на прототип объекта,
доступная на уровне JavaScript, обнажающая
средство управления прототипом объекта
[[Prototype]] на уровне EcmaScript (C++)
prototype chain (прототипная цепочка) -
специальный термин, который обозначает
связь JavaScript объектов между собой по
ссылке [[Prototype]] на уровне EcmaScript (C++)
youtube channel
InSimpleWordsОбъекты в ECMAScript
Внутренние составляющие объекта (descriptors)
{ age : 31 }
ключ + значение
свойство,
которое управляется
дескриптором
youtube channel
InSimpleWordsОбъекты в ECMAScript
Внутренние составляющие объекта (descriptors)
data property descriptor
[[Value]]
[[Writable]]
[[Enumerable]]
[[Configurable]]
accessor property descriptor
[[Get]]
[[Set]]
[[Enumerable]]
[[Configurable]]
generic property descriptor
youtube channel
InSimpleWordsОбъекты в ECMAScript
Внутренние составляющие объекта (behaviour)
Поведение объекта (behaviour) - это набор
его внутренних методов, которые
реализуют суть объекта и приемы работы с
ним. Внутренние методы описываются
абстрактными алгоритмами, которые
предписывают ожидаемый результат.
youtube channel
InSimpleWordsОбъекты в ECMAScript
Внутренние составляющие объекта (behaviour)
по-человечески
Поведение объекта (behaviour) – то, как мы
можем использовать объект. Это список
действий, которые объясняют / показывают,
что должно происходить, например, при
взятии значения свойства, или при его
удалении ... , например
youtube channel
InSimpleWordsОбъекты в ECMAScript
Внутренние составляющие объекта (behaviour)
[[GetPrototypeOf]]() - получить прототип
[[PreventExtensions]]() - запретить
“расширять” объект новыми свойствами
[[DefineOwnProperty]](property, Descriptor) -
установить собственное свойство объекта
из заданного дескриптора
… и другие
youtube channel
InSimpleWordsОбъекты в ECMAScript
Внутренние составляющие объекта (behaviour)
команда JavaScript
команда ECMAScript
вызывает алгоритм поведения
youtube channel
InSimpleWordsОбъекты в ECMAScript
Внутренние составляющие объекта (behaviour)
алгоритм поведения
изменяет
состояние объекта на требуемое
youtube channel
InSimpleWordsОбъекты в ECMAScript
Внутренние составляющие объекта (behaviour)
ммм, поведение
экзотического объекта
угадаете
какого
объекта ?
youtube channel
InSimpleWordsОбъекты в ECMAScript
Внутренние составляющие объекта (invariants)
Инварианты - это строгие правила, которым
должны подчиняться все объекты: и обычные, и
экзотические… Эти правила призваны исключить
недопонимание или неоднозначность каких-то
трактований. Запрещено обходить инварианты
какой-то своей или сторонней реализацией. Иначе
это приведет к непредсказуемому поведению кода.
youtube channel
InSimpleWordsОбъекты в ECMAScript
Внутренние составляющие объекта (invariants)
- если свойство объекта заморожено через
атрибут configurable === false, то удалить это
свойство через метод [[Delete]] уже нельзя
- если объект нерасширяем и у него уже есть
прототип V, то любой вызов [[GetPrototypeOf]]
будет всегда возвращать прототип V.
Спасибо, КЭП
А вот здесь уже сложнее
youtube channel
InSimpleWordsОбъекты в ECMAScript
Внутренние составляющие объекта
[[Prototype]]
Descriptors
Behaviour
Invariants
Хотите ещё?
youtube channel
InSimpleWordsОбъекты в ECMAScript
Внутренние составляющие объекта (functions)
[[Call]] ( thisArgument, argumentsList)
[[Construct]] ( argumentsList, newTarget)
[[ECMAScriptCode]] – тело функции
[[FormalParameters]] – параметры функции
[[Strict]] – будет ли выполняться код функции
в строгом режиме
… и другие
youtube channel
InSimpleWordsОбъекты в ECMAScript
Внутренние составляющие объекта (functions)
[[Environment]] – лексическое окружение, в
котором была создана функция. Используется
как внешнее лексическое окружение при
выполнении кода этой функции.
Ничего не напоминает?
Может …
youtube channel
InSimpleWordsОбъекты в ECMAScript
Внутренние составляющие объекта (functions)
Замыкание – механизм, который при вызове
функции устанавливает связь её собственного
лексического окружения с внешним лексическим
окружением, где эта функция была создана.
Область видимости – совокупность данных, с
которыми может работать выполняемый код
Давайте не путать с …
youtube channel
InSimpleWordsОбъекты в ECMAScript
youtube channel
InSimpleWordsОбъекты в ECMAScript
youtube channel
InSimpleWordsОбъекты в ECMAScript
Как “забинденная” функция сохраняет this и
прикрепленные аргументы?
youtube channel
InSimpleWordsОбъекты в ECMAScript
Почему генератор может восстановить
исполнение кода на прерванной точке?
youtube channel
InSimpleWordsОбъекты в ECMAScript
Где хранятся коллбеки Promise.prototype.then() ?
youtube channel
InSimpleWordsОбъекты в ECMAScript
Магия исчезает тогда,
когда появляются знания!
youtube channel
InSimpleWordsОбъекты в ECMAScript
Семья – это важная первичная ячейка общества /
ECMAScript, в которой люди / объекты связаны
между собой определенными отношениями.
ЕCMAScript вариант:
конструктор
объект
прототип
Классический вариант:
мама
сын
папа
youtube channel
InSimpleWordsОбъекты в ECMAScript
youtube channel
InSimpleWordsОбъекты в ECMAScript
youtube channel
InSimpleWordsОбъекты в ECMAScript
Функция CreateObj настраивает “свой” объект-
прототип CreateObj.prototype свойствами,
которые пригодятся в будущем рожденному
объекту child. А обратиться к этим свойствам у
CreateObj.prototype - сhild сможет через
[[Prototype]]
youtube channel
InSimpleWordsОбъекты в ECMAScript
А у папы и мамы есть свои папа и мама … А у них
свои …
Построим генеалогическое древо нашей функции ?
Поищем Адама и Еву у CreateObj ?
youtube channel
InSimpleWordsОбъекты в ECMAScript
youtube channel
InSimpleWordsОбъекты в ECMAScript
youtube channel
InSimpleWordsОбъекты в ECMAScript
Наверно, над многими из нас есть семья соседей
сверху: маркизы Де-Generator-s …
Не надо всматриваться и разбираться в
следующем рисунке! Он лишь для примера!
Показывает, почему их семья объектов не дают
нам, программистам, спать по ночам.
Рисунок скопирован из спецификации
youtube channel
InSimpleWordsОбъекты в ECMAScript
youtube channel
InSimpleWordsОбъекты в ECMAScript
… сейчас это уже детская забава, но именно в
тот момент чувствовалось, как нечто в нашем
сознании незримо поменялось …
Эксперимент
youtube channel
InSimpleWordsОбъекты в ECMAScript
let child = new CreateObj();
function CreateObj() {
console.log("I am Mother");
this.age = 4;
};
CreateObj.prototype = {
xBox: true,
nerves: "Steel",
mind: "sharp",
heart: "brave"
};
функция
объект,
рожденный от функции
Эксперимент: исходные данные
прототип объекта
прототайп функции
youtube channel
InSimpleWordsОбъекты в ECMAScript
Эксперимент: __proto__ работает
youtube channel
InSimpleWordsОбъекты в ECMAScript
Эксперимент:
такого свойства, как “__proto__” , не существует
youtube channel
InSimpleWordsОбъекты в ECMAScript
Эксперимент:
for in не смог помочь нам найти “__proto__”
youtube channel
InSimpleWordsОбъекты в ECMAScript
Эксперимент: в конце концов свойство
“__proto__” мы находим у Object.prototype
youtube channel
InSimpleWordsОбъекты в ECMAScript
Эксперимент: искушение – прибиваем “__proto__”
youtube channel
InSimpleWordsОбъекты в ECMAScript
Эксперимент:
прототипа больше нет ни у кого,
JavaScript сломлен
youtube channel
InSimpleWordsОбъекты в ECMAScript
Эксперимент:
но ECMAScript не сломан !
youtube channel
InSimpleWordsОбъекты в ECMAScript
Эксперимент: итоги
Прототипная цепь работает. Свойство
__proto__ равно undefined, а JavaScript как
работал, так и продолжает работать.
Напакостив “светлой стороне силы”, мы ничего не
сможем сделать “темной”. Внутренняя
структура объектов EcmaScript и их взаимосвязи
не нарушены!
youtube channel
InSimpleWordsОбъекты в ECMAScript
Эксперимент: итоги
Объект с точки зрения EcmaScript - это техническое
описание некой абстрактной сущности, которая:
- существует во взаимосвязи с другими объектами,
опираясь на ссылку [[Prototype]]
- обладает набором собственных внутренних
свойств и методов, обеспечивающими
предсказуемое поведение (behavior + invariants)
- состоит в JavaScript из свойств, каждое из которых
управляется дескриптором
youtube channel
InSimpleWordsОбъекты в ECMAScript
Ну и в заключение
А нужно ли разбираться в ECMAScript? И без
него как-то жили, живем и будем жить …
youtube channel
InSimpleWordsОбъекты в ECMAScript
youtube channel
InSimpleWordsОбъекты в ECMAScript
youtube channel
InSimpleWordsОбъекты в ECMAScript
youtube channel
InSimpleWordsОбъекты в ECMAScript
youtube channel
InSimpleWordsОбъекты в ECMAScript
youtube channel
InSimpleWordsОбъекты в ECMAScript
youtube channel
InSimpleWordsОбъекты в ECMAScript
youtube channel
InSimpleWordsОбъекты в ECMAScript
youtube channel
InSimpleWordsОбъекты в ECMAScript
youtube channel
InSimpleWordsОбъекты в ECMAScript
youtube channel
InSimpleWordsОбъекты в ECMAScript
youtube channel
InSimpleWordsОбъекты в ECMAScript
youtube channel
InSimpleWordsОбъекты в ECMAScript
Спасибо всем
внимание!
И помните об ECMAScript!
Истина где-то рядом …
V8

Contenu connexe

Tendances

Поговорим о JavaScript, основы и современные тенденции развития языка
Поговорим о JavaScript, основы и современные тенденции развития языкаПоговорим о JavaScript, основы и современные тенденции развития языка
Поговорим о JavaScript, основы и современные тенденции развития языкаAlexander Kucherenko
 
C#. От основ к эффективному коду
C#. От основ к эффективному кодуC#. От основ к эффективному коду
C#. От основ к эффективному кодуVasiliy Deynega
 
9. java lecture library
9. java lecture library9. java lecture library
9. java lecture libraryMERA_school
 
06 - Java. Ввод/вывод, доступ к файловой системе
06 - Java. Ввод/вывод, доступ к файловой системе06 - Java. Ввод/вывод, доступ к файловой системе
06 - Java. Ввод/вывод, доступ к файловой системеRoman Brovko
 
Oop java.generics
Oop java.genericsOop java.generics
Oop java.genericsmuqaddas_m
 
10. java lecture generics&collections
10. java lecture generics&collections10. java lecture generics&collections
10. java lecture generics&collectionsMERA_school
 
03 - Java. Объекты, классы и пакеты в Java
03 - Java. Объекты, классы и пакеты в Java03 - Java. Объекты, классы и пакеты в Java
03 - Java. Объекты, классы и пакеты в JavaRoman Brovko
 
Java. Введение в коллекции. Классы обертки. Перечисленияю
Java. Введение в коллекции. Классы обертки.  ПеречисленияюJava. Введение в коллекции. Классы обертки.  Перечисленияю
Java. Введение в коллекции. Классы обертки. ПеречисленияюUnguryan Vitaliy
 
Документирование исходных текстов (javadoc)
Документирование исходных текстов (javadoc)Документирование исходных текстов (javadoc)
Документирование исходных текстов (javadoc)Fedor Malyshkin
 
12 - Java. Разработка сетевых приложений на Java
12 - Java. Разработка сетевых приложений на Java12 - Java. Разработка сетевых приложений на Java
12 - Java. Разработка сетевых приложений на JavaRoman Brovko
 
Язык программирования Scala / Владимир Успенский (TCS Bank)
Язык программирования Scala / Владимир Успенский (TCS Bank)Язык программирования Scala / Владимир Успенский (TCS Bank)
Язык программирования Scala / Владимир Успенский (TCS Bank)Ontico
 
JPoint 2015 - Javassist на службе Java-разработчика
JPoint 2015 - Javassist на службе Java-разработчикаJPoint 2015 - Javassist на службе Java-разработчика
JPoint 2015 - Javassist на службе Java-разработчикаAnton Arhipov
 
Исключения и ошибки
Исключения и ошибкиИсключения и ошибки
Исключения и ошибкиUnguryan Vitaliy
 

Tendances (16)

Поговорим о JavaScript, основы и современные тенденции развития языка
Поговорим о JavaScript, основы и современные тенденции развития языкаПоговорим о JavaScript, основы и современные тенденции развития языка
Поговорим о JavaScript, основы и современные тенденции развития языка
 
C#. От основ к эффективному коду
C#. От основ к эффективному кодуC#. От основ к эффективному коду
C#. От основ к эффективному коду
 
9. java lecture library
9. java lecture library9. java lecture library
9. java lecture library
 
06 - Java. Ввод/вывод, доступ к файловой системе
06 - Java. Ввод/вывод, доступ к файловой системе06 - Java. Ввод/вывод, доступ к файловой системе
06 - Java. Ввод/вывод, доступ к файловой системе
 
Oop java.generics
Oop java.genericsOop java.generics
Oop java.generics
 
10. java lecture generics&collections
10. java lecture generics&collections10. java lecture generics&collections
10. java lecture generics&collections
 
Generics
GenericsGenerics
Generics
 
03 - Java. Объекты, классы и пакеты в Java
03 - Java. Объекты, классы и пакеты в Java03 - Java. Объекты, классы и пакеты в Java
03 - Java. Объекты, классы и пакеты в Java
 
Java. Введение в коллекции. Классы обертки. Перечисленияю
Java. Введение в коллекции. Классы обертки.  ПеречисленияюJava. Введение в коллекции. Классы обертки.  Перечисленияю
Java. Введение в коллекции. Классы обертки. Перечисленияю
 
Stream API
Stream APIStream API
Stream API
 
Документирование исходных текстов (javadoc)
Документирование исходных текстов (javadoc)Документирование исходных текстов (javadoc)
Документирование исходных текстов (javadoc)
 
12 - Java. Разработка сетевых приложений на Java
12 - Java. Разработка сетевых приложений на Java12 - Java. Разработка сетевых приложений на Java
12 - Java. Разработка сетевых приложений на Java
 
Язык программирования Scala / Владимир Успенский (TCS Bank)
Язык программирования Scala / Владимир Успенский (TCS Bank)Язык программирования Scala / Владимир Успенский (TCS Bank)
Язык программирования Scala / Владимир Успенский (TCS Bank)
 
Kotlin with API tests
Kotlin with API testsKotlin with API tests
Kotlin with API tests
 
JPoint 2015 - Javassist на службе Java-разработчика
JPoint 2015 - Javassist на службе Java-разработчикаJPoint 2015 - Javassist на службе Java-разработчика
JPoint 2015 - Javassist на службе Java-разработчика
 
Исключения и ошибки
Исключения и ошибкиИсключения и ошибки
Исключения и ошибки
 

Similaire à Объекты в ECMAScript | Odessa Frontend Meetup #16

Объектное и прототипное программирование в Javascript
Объектное и прототипное программирование в JavascriptОбъектное и прототипное программирование в Javascript
Объектное и прототипное программирование в JavascriptDenis Latushkin
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Javametaform
 
Ecma script 6 in action
Ecma script 6 in actionEcma script 6 in action
Ecma script 6 in actionYuri Trukhin
 
Solit 2014, EcmaScript 6 in Action, Трухин Юрий
Solit 2014, EcmaScript 6 in Action, Трухин Юрий Solit 2014, EcmaScript 6 in Action, Трухин Юрий
Solit 2014, EcmaScript 6 in Action, Трухин Юрий solit
 
Kozhemyakin dcm2011 1
Kozhemyakin dcm2011 1Kozhemyakin dcm2011 1
Kozhemyakin dcm2011 1drupalconf
 
C# Web. Занятие 04.
C# Web. Занятие 04.C# Web. Занятие 04.
C# Web. Занятие 04.Igor Shkulipa
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Javametaform
 
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность 2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность Омские ИТ-субботники
 
Java осень 2014 занятие 3
Java осень 2014 занятие 3Java осень 2014 занятие 3
Java осень 2014 занятие 3Technopark
 
C# Desktop. Занятие 02.
C# Desktop. Занятие 02.C# Desktop. Занятие 02.
C# Desktop. Занятие 02.Igor Shkulipa
 
C++ Базовый. Занятие 17.
C++ Базовый. Занятие 17.C++ Базовый. Занятие 17.
C++ Базовый. Занятие 17.Igor Shkulipa
 
ук 03.003.01 2011
ук 03.003.01 2011ук 03.003.01 2011
ук 03.003.01 2011etyumentcev
 
Зачем нужна Scala?
Зачем нужна Scala?Зачем нужна Scala?
Зачем нужна Scala?Vasil Remeniuk
 
Приложения для Windows Phone: как мы это делаем #codefest
Приложения для Windows Phone: как мы это делаем #codefestПриложения для Windows Phone: как мы это делаем #codefest
Приложения для Windows Phone: как мы это делаем #codefestActis Wunderman
 
Ember.js ответ на почти все вопросы - java script frameworks day 2014
Ember.js   ответ на почти все вопросы - java script frameworks day 2014Ember.js   ответ на почти все вопросы - java script frameworks day 2014
Ember.js ответ на почти все вопросы - java script frameworks day 2014Andrey Listochkin
 
Фундаментальные основы разработки под iOS. Павел Тайкало
Фундаментальные основы разработки под iOS. Павел ТайкалоФундаментальные основы разработки под iOS. Павел Тайкало
Фундаментальные основы разработки под iOS. Павел ТайкалоStanfy
 
Lecture5
Lecture5Lecture5
Lecture5orgil
 
C++ осень 2013 лекция 4
C++ осень 2013 лекция 4C++ осень 2013 лекция 4
C++ осень 2013 лекция 4Technopark
 
Behat в PHP с использованием Behat и Mink
Behat в PHP с использованием Behat и MinkBehat в PHP с использованием Behat и Mink
Behat в PHP с использованием Behat и Minktyomo4ka
 

Similaire à Объекты в ECMAScript | Odessa Frontend Meetup #16 (20)

Объектное и прототипное программирование в Javascript
Объектное и прототипное программирование в JavascriptОбъектное и прототипное программирование в Javascript
Объектное и прототипное программирование в Javascript
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Java
 
Ecma script 6 in action
Ecma script 6 in actionEcma script 6 in action
Ecma script 6 in action
 
Solit 2014, EcmaScript 6 in Action, Трухин Юрий
Solit 2014, EcmaScript 6 in Action, Трухин Юрий Solit 2014, EcmaScript 6 in Action, Трухин Юрий
Solit 2014, EcmaScript 6 in Action, Трухин Юрий
 
Kozhemyakin dcm2011 1
Kozhemyakin dcm2011 1Kozhemyakin dcm2011 1
Kozhemyakin dcm2011 1
 
C# Web. Занятие 04.
C# Web. Занятие 04.C# Web. Занятие 04.
C# Web. Занятие 04.
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Java
 
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность 2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность
 
Java осень 2014 занятие 3
Java осень 2014 занятие 3Java осень 2014 занятие 3
Java осень 2014 занятие 3
 
C# Desktop. Занятие 02.
C# Desktop. Занятие 02.C# Desktop. Занятие 02.
C# Desktop. Занятие 02.
 
C++ Базовый. Занятие 17.
C++ Базовый. Занятие 17.C++ Базовый. Занятие 17.
C++ Базовый. Занятие 17.
 
Javascript 1
Javascript 1Javascript 1
Javascript 1
 
ук 03.003.01 2011
ук 03.003.01 2011ук 03.003.01 2011
ук 03.003.01 2011
 
Зачем нужна Scala?
Зачем нужна Scala?Зачем нужна Scala?
Зачем нужна Scala?
 
Приложения для Windows Phone: как мы это делаем #codefest
Приложения для Windows Phone: как мы это делаем #codefestПриложения для Windows Phone: как мы это делаем #codefest
Приложения для Windows Phone: как мы это делаем #codefest
 
Ember.js ответ на почти все вопросы - java script frameworks day 2014
Ember.js   ответ на почти все вопросы - java script frameworks day 2014Ember.js   ответ на почти все вопросы - java script frameworks day 2014
Ember.js ответ на почти все вопросы - java script frameworks day 2014
 
Фундаментальные основы разработки под iOS. Павел Тайкало
Фундаментальные основы разработки под iOS. Павел ТайкалоФундаментальные основы разработки под iOS. Павел Тайкало
Фундаментальные основы разработки под iOS. Павел Тайкало
 
Lecture5
Lecture5Lecture5
Lecture5
 
C++ осень 2013 лекция 4
C++ осень 2013 лекция 4C++ осень 2013 лекция 4
C++ осень 2013 лекция 4
 
Behat в PHP с использованием Behat и Mink
Behat в PHP с использованием Behat и MinkBehat в PHP с использованием Behat и Mink
Behat в PHP с использованием Behat и Mink
 

Plus de OdessaFrontend

Викторина | Odessa Frontend Meetup #19
Викторина | Odessa Frontend Meetup #19Викторина | Odessa Frontend Meetup #19
Викторина | Odessa Frontend Meetup #19OdessaFrontend
 
Использование Recoil в React и React Native приложениях | Odessa Frontend Mee...
Использование Recoil в React и React Native приложениях | Odessa Frontend Mee...Использование Recoil в React и React Native приложениях | Odessa Frontend Mee...
Использование Recoil в React и React Native приложениях | Odessa Frontend Mee...OdessaFrontend
 
Великолепный Gatsby.js | Odessa Frontend Meetup #19
Великолепный Gatsby.js | Odessa Frontend Meetup #19Великолепный Gatsby.js | Odessa Frontend Meetup #19
Великолепный Gatsby.js | Odessa Frontend Meetup #19OdessaFrontend
 
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...OdessaFrontend
 
Canvas API как инструмент для работы с графикой | Odessa Frontend Meetup #18
Canvas API как инструмент для работы с графикой | Odessa Frontend Meetup #18Canvas API как инструмент для работы с графикой | Odessa Frontend Meetup #18
Canvas API как инструмент для работы с графикой | Odessa Frontend Meetup #18OdessaFrontend
 
Викторина | Odessa Frontend Meetup #17
Викторина | Odessa Frontend Meetup #17Викторина | Odessa Frontend Meetup #17
Викторина | Odessa Frontend Meetup #17OdessaFrontend
 
Антихрупкий TypeScript | Odessa Frontend Meetup #17
Антихрупкий TypeScript | Odessa Frontend Meetup #17Антихрупкий TypeScript | Odessa Frontend Meetup #17
Антихрупкий TypeScript | Odessa Frontend Meetup #17OdessaFrontend
 
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17OdessaFrontend
 
OAuth2 и OpenID Connect простым языком | Odessa Frontend Meetup #17
OAuth2 и OpenID Connect простым языком | Odessa Frontend Meetup #17OAuth2 и OpenID Connect простым языком | Odessa Frontend Meetup #17
OAuth2 и OpenID Connect простым языком | Odessa Frontend Meetup #17OdessaFrontend
 
Фриланс как профессиональная деградация | Odessa Frontend Meetup #16
Фриланс как профессиональная деградация | Odessa Frontend Meetup #16Фриланс как профессиональная деградация | Odessa Frontend Meetup #16
Фриланс как профессиональная деградация | Odessa Frontend Meetup #16OdessaFrontend
 
Cлайдер на CSS | Odessa Frontend Meetup #16
Cлайдер на CSS | Odessa Frontend Meetup #16Cлайдер на CSS | Odessa Frontend Meetup #16
Cлайдер на CSS | Odessa Frontend Meetup #16OdessaFrontend
 
Современный станок верстальщика
Современный станок верстальщикаСовременный станок верстальщика
Современный станок верстальщикаOdessaFrontend
 
Викторина | Odessa Frontend Meetup #15
Викторина | Odessa Frontend Meetup #15Викторина | Odessa Frontend Meetup #15
Викторина | Odessa Frontend Meetup #15OdessaFrontend
 
DRY’им Vuex | Odessa Frontend Meetup #15
DRY’им Vuex | Odessa Frontend Meetup #15DRY’им Vuex | Odessa Frontend Meetup #15
DRY’им Vuex | Odessa Frontend Meetup #15OdessaFrontend
 
А/Б тестирование: Что? Как? Зачем? | Odessa Frontend Meetup #15
А/Б тестирование: Что? Как? Зачем? | Odessa Frontend Meetup #15А/Б тестирование: Что? Как? Зачем? | Odessa Frontend Meetup #15
А/Б тестирование: Что? Как? Зачем? | Odessa Frontend Meetup #15OdessaFrontend
 
Пощупать 3д в браузере | Odessa Frontend Meetup #15
Пощупать 3д в браузере | Odessa Frontend Meetup #15Пощупать 3д в браузере | Odessa Frontend Meetup #15
Пощупать 3д в браузере | Odessa Frontend Meetup #15OdessaFrontend
 
Викторина | Odessa Frontend Meetup #14
Викторина | Odessa Frontend Meetup #14Викторина | Odessa Frontend Meetup #14
Викторина | Odessa Frontend Meetup #14OdessaFrontend
 
Викторина | Odessa Frontend Meetup #13
Викторина | Odessa Frontend Meetup #13Викторина | Odessa Frontend Meetup #13
Викторина | Odessa Frontend Meetup #13OdessaFrontend
 
Структуры данных в JavaScript | Odessa Frontend Meetup #13
Структуры данных в JavaScript | Odessa Frontend Meetup #13Структуры данных в JavaScript | Odessa Frontend Meetup #13
Структуры данных в JavaScript | Odessa Frontend Meetup #13OdessaFrontend
 
Эффективность с большой буквы Э… или любой другой | Odessa Frontend Meetup #13
Эффективность с большой буквы Э… или любой другой | Odessa Frontend Meetup #13Эффективность с большой буквы Э… или любой другой | Odessa Frontend Meetup #13
Эффективность с большой буквы Э… или любой другой | Odessa Frontend Meetup #13OdessaFrontend
 

Plus de OdessaFrontend (20)

Викторина | Odessa Frontend Meetup #19
Викторина | Odessa Frontend Meetup #19Викторина | Odessa Frontend Meetup #19
Викторина | Odessa Frontend Meetup #19
 
Использование Recoil в React и React Native приложениях | Odessa Frontend Mee...
Использование Recoil в React и React Native приложениях | Odessa Frontend Mee...Использование Recoil в React и React Native приложениях | Odessa Frontend Mee...
Использование Recoil в React и React Native приложениях | Odessa Frontend Mee...
 
Великолепный Gatsby.js | Odessa Frontend Meetup #19
Великолепный Gatsby.js | Odessa Frontend Meetup #19Великолепный Gatsby.js | Odessa Frontend Meetup #19
Великолепный Gatsby.js | Odessa Frontend Meetup #19
 
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...
 
Canvas API как инструмент для работы с графикой | Odessa Frontend Meetup #18
Canvas API как инструмент для работы с графикой | Odessa Frontend Meetup #18Canvas API как инструмент для работы с графикой | Odessa Frontend Meetup #18
Canvas API как инструмент для работы с графикой | Odessa Frontend Meetup #18
 
Викторина | Odessa Frontend Meetup #17
Викторина | Odessa Frontend Meetup #17Викторина | Odessa Frontend Meetup #17
Викторина | Odessa Frontend Meetup #17
 
Антихрупкий TypeScript | Odessa Frontend Meetup #17
Антихрупкий TypeScript | Odessa Frontend Meetup #17Антихрупкий TypeScript | Odessa Frontend Meetup #17
Антихрупкий TypeScript | Odessa Frontend Meetup #17
 
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
 
OAuth2 и OpenID Connect простым языком | Odessa Frontend Meetup #17
OAuth2 и OpenID Connect простым языком | Odessa Frontend Meetup #17OAuth2 и OpenID Connect простым языком | Odessa Frontend Meetup #17
OAuth2 и OpenID Connect простым языком | Odessa Frontend Meetup #17
 
Фриланс как профессиональная деградация | Odessa Frontend Meetup #16
Фриланс как профессиональная деградация | Odessa Frontend Meetup #16Фриланс как профессиональная деградация | Odessa Frontend Meetup #16
Фриланс как профессиональная деградация | Odessa Frontend Meetup #16
 
Cлайдер на CSS | Odessa Frontend Meetup #16
Cлайдер на CSS | Odessa Frontend Meetup #16Cлайдер на CSS | Odessa Frontend Meetup #16
Cлайдер на CSS | Odessa Frontend Meetup #16
 
Современный станок верстальщика
Современный станок верстальщикаСовременный станок верстальщика
Современный станок верстальщика
 
Викторина | Odessa Frontend Meetup #15
Викторина | Odessa Frontend Meetup #15Викторина | Odessa Frontend Meetup #15
Викторина | Odessa Frontend Meetup #15
 
DRY’им Vuex | Odessa Frontend Meetup #15
DRY’им Vuex | Odessa Frontend Meetup #15DRY’им Vuex | Odessa Frontend Meetup #15
DRY’им Vuex | Odessa Frontend Meetup #15
 
А/Б тестирование: Что? Как? Зачем? | Odessa Frontend Meetup #15
А/Б тестирование: Что? Как? Зачем? | Odessa Frontend Meetup #15А/Б тестирование: Что? Как? Зачем? | Odessa Frontend Meetup #15
А/Б тестирование: Что? Как? Зачем? | Odessa Frontend Meetup #15
 
Пощупать 3д в браузере | Odessa Frontend Meetup #15
Пощупать 3д в браузере | Odessa Frontend Meetup #15Пощупать 3д в браузере | Odessa Frontend Meetup #15
Пощупать 3д в браузере | Odessa Frontend Meetup #15
 
Викторина | Odessa Frontend Meetup #14
Викторина | Odessa Frontend Meetup #14Викторина | Odessa Frontend Meetup #14
Викторина | Odessa Frontend Meetup #14
 
Викторина | Odessa Frontend Meetup #13
Викторина | Odessa Frontend Meetup #13Викторина | Odessa Frontend Meetup #13
Викторина | Odessa Frontend Meetup #13
 
Структуры данных в JavaScript | Odessa Frontend Meetup #13
Структуры данных в JavaScript | Odessa Frontend Meetup #13Структуры данных в JavaScript | Odessa Frontend Meetup #13
Структуры данных в JavaScript | Odessa Frontend Meetup #13
 
Эффективность с большой буквы Э… или любой другой | Odessa Frontend Meetup #13
Эффективность с большой буквы Э… или любой другой | Odessa Frontend Meetup #13Эффективность с большой буквы Э… или любой другой | Odessa Frontend Meetup #13
Эффективность с большой буквы Э… или любой другой | Odessa Frontend Meetup #13
 

Объекты в ECMAScript | Odessa Frontend Meetup #16

  • 1. Объекты в ECMAScript youtube channel InSimpleWords
  • 2. ECMAScript is object-based: basic language and host facilities are provided by objects, and an ECMAScript program is a cluster of communicating objects. In ECMAScript, an object is a collection of zero or more properties each with attributes that determine how each property can be used. Properties are containers that hold other objects, primitive values, or functions. Объекты в ECMAScript youtube channel InSimpleWords
  • 3. ECMAScript is object-based: basic language and host facilities are provided by objects, and an ECMAScript program is a cluster of communicating objects. In ECMAScript, an object is a collection of zero or more properties each with attributes that determine how each property can be used. Properties are containers that hold other objects, primitive values, or functions. Объекты в ECMAScript youtube channel InSimpleWords
  • 4. ECMAScript is object-based: basic language and host facilities are provided by objects, and an ECMAScript program is a cluster of communicating objects. In ECMAScript, an object is a collection of zero or more properties each with attributes that determine how each property can be used. Properties are containers that hold other objects, primitive values, or functions. Объекты в ECMAScript youtube channel InSimpleWords
  • 5. ECMAScript is object-based: basic language and host facilities are provided by objects, and an ECMAScript program is a cluster of communicating objects. In ECMAScript, an object is a collection of zero or more properties each with attributes that determine how each property can be used. Properties are containers that hold other objects, primitive values, or functions. Объекты в ECMAScript youtube channel InSimpleWords
  • 6. Объекты в ECMAScript youtube channel InSimpleWords
  • 9. youtube channel InSimpleWordsОбъекты в ECMAScript Обычный объект Экзотический объект
  • 12. youtube channel InSimpleWordsОбъекты в ECMAScript An object is a collection of properties and has a single prototype object. The prototype may be the null value.
  • 13. youtube channel InSimpleWordsОбъекты в ECMAScript Every object created by a constructor has an implicit reference (called the object's prototype) to the value of its constructor's "prototype" property. Furthermore, a prototype may have a non-null implicit reference to its prototype, and so on; this is called the prototype chain. An object is a collection of properties and has a single prototype object. The prototype may be the null value.
  • 14. youtube channel InSimpleWordsОбъекты в ECMAScript Every object created by a constructor has an implicit reference (called the object's prototype) to the value of its constructor's "prototype" property. Furthermore, a prototype may have a non-null implicit reference to its prototype, and so on; this is called the prototype chain. An object is a collection of properties and has a single prototype object. The prototype may be the null value.
  • 15. youtube channel InSimpleWordsОбъекты в ECMAScript - Implicit reference в ECMAScript ? - А что вообще из себя представляет ECMAScript ? - Кроме того, что там много текста и умных слов …
  • 16. youtube channel InSimpleWordsОбъекты в ECMAScript - Описывает работу с какими-то данными (Reference, Lexical Environment … Record)
  • 17. youtube channel InSimpleWordsОбъекты в ECMAScript - По каким-то алгоритмам
  • 18. youtube channel InSimpleWordsОбъекты в ECMAScript - Похоже на JavaScript? - А может это и есть JavaScript? - EcmaScript - есть не что иное как набор утверждений и правил, на основе которых написаны / имплементированы движки JavaScript (SpiderMonkey, V8 …). - Разве это не одно и тоже? …
  • 19. youtube channel InSimpleWordsОбъекты в ECMAScript IMPLICIT EXPLICIT ECMAScript JavaScript VS
  • 20. youtube channel InSimpleWordsОбъекты в ECMAScript IMPLICIT EXPLICIT ECMAScript JavaScript V8 Реализует спецификацию, например, на С++
  • 22. youtube channel InSimpleWordsОбъекты в ECMAScript [[Prototype]] - ссылка на прототип объекта, закодированная на уровне ECMAScript (C++) prototype - обычное свойство функции конструктора, управляемое из JavaScript, указывающее на объект, который будет устанавливаться новорожденным объектам от этой функции по ссылке [[Prototype]]
  • 23. youtube channel InSimpleWordsОбъекты в ECMAScript __proto__ - ссылка на прототип объекта, доступная на уровне JavaScript, обнажающая средство управления прототипом объекта [[Prototype]] на уровне EcmaScript (C++) prototype chain (прототипная цепочка) - специальный термин, который обозначает связь JavaScript объектов между собой по ссылке [[Prototype]] на уровне EcmaScript (C++)
  • 24. youtube channel InSimpleWordsОбъекты в ECMAScript Внутренние составляющие объекта (descriptors) { age : 31 } ключ + значение свойство, которое управляется дескриптором
  • 25. youtube channel InSimpleWordsОбъекты в ECMAScript Внутренние составляющие объекта (descriptors) data property descriptor [[Value]] [[Writable]] [[Enumerable]] [[Configurable]] accessor property descriptor [[Get]] [[Set]] [[Enumerable]] [[Configurable]] generic property descriptor
  • 26. youtube channel InSimpleWordsОбъекты в ECMAScript Внутренние составляющие объекта (behaviour) Поведение объекта (behaviour) - это набор его внутренних методов, которые реализуют суть объекта и приемы работы с ним. Внутренние методы описываются абстрактными алгоритмами, которые предписывают ожидаемый результат.
  • 27. youtube channel InSimpleWordsОбъекты в ECMAScript Внутренние составляющие объекта (behaviour) по-человечески Поведение объекта (behaviour) – то, как мы можем использовать объект. Это список действий, которые объясняют / показывают, что должно происходить, например, при взятии значения свойства, или при его удалении ... , например
  • 28. youtube channel InSimpleWordsОбъекты в ECMAScript Внутренние составляющие объекта (behaviour) [[GetPrototypeOf]]() - получить прототип [[PreventExtensions]]() - запретить “расширять” объект новыми свойствами [[DefineOwnProperty]](property, Descriptor) - установить собственное свойство объекта из заданного дескриптора … и другие
  • 29. youtube channel InSimpleWordsОбъекты в ECMAScript Внутренние составляющие объекта (behaviour) команда JavaScript команда ECMAScript вызывает алгоритм поведения
  • 30. youtube channel InSimpleWordsОбъекты в ECMAScript Внутренние составляющие объекта (behaviour) алгоритм поведения изменяет состояние объекта на требуемое
  • 31. youtube channel InSimpleWordsОбъекты в ECMAScript Внутренние составляющие объекта (behaviour) ммм, поведение экзотического объекта угадаете какого объекта ?
  • 32. youtube channel InSimpleWordsОбъекты в ECMAScript Внутренние составляющие объекта (invariants) Инварианты - это строгие правила, которым должны подчиняться все объекты: и обычные, и экзотические… Эти правила призваны исключить недопонимание или неоднозначность каких-то трактований. Запрещено обходить инварианты какой-то своей или сторонней реализацией. Иначе это приведет к непредсказуемому поведению кода.
  • 33. youtube channel InSimpleWordsОбъекты в ECMAScript Внутренние составляющие объекта (invariants) - если свойство объекта заморожено через атрибут configurable === false, то удалить это свойство через метод [[Delete]] уже нельзя - если объект нерасширяем и у него уже есть прототип V, то любой вызов [[GetPrototypeOf]] будет всегда возвращать прототип V. Спасибо, КЭП А вот здесь уже сложнее
  • 34. youtube channel InSimpleWordsОбъекты в ECMAScript Внутренние составляющие объекта [[Prototype]] Descriptors Behaviour Invariants Хотите ещё?
  • 35. youtube channel InSimpleWordsОбъекты в ECMAScript Внутренние составляющие объекта (functions) [[Call]] ( thisArgument, argumentsList) [[Construct]] ( argumentsList, newTarget) [[ECMAScriptCode]] – тело функции [[FormalParameters]] – параметры функции [[Strict]] – будет ли выполняться код функции в строгом режиме … и другие
  • 36. youtube channel InSimpleWordsОбъекты в ECMAScript Внутренние составляющие объекта (functions) [[Environment]] – лексическое окружение, в котором была создана функция. Используется как внешнее лексическое окружение при выполнении кода этой функции. Ничего не напоминает? Может …
  • 37. youtube channel InSimpleWordsОбъекты в ECMAScript Внутренние составляющие объекта (functions) Замыкание – механизм, который при вызове функции устанавливает связь её собственного лексического окружения с внешним лексическим окружением, где эта функция была создана. Область видимости – совокупность данных, с которыми может работать выполняемый код Давайте не путать с …
  • 40. youtube channel InSimpleWordsОбъекты в ECMAScript Как “забинденная” функция сохраняет this и прикрепленные аргументы?
  • 41. youtube channel InSimpleWordsОбъекты в ECMAScript Почему генератор может восстановить исполнение кода на прерванной точке?
  • 42. youtube channel InSimpleWordsОбъекты в ECMAScript Где хранятся коллбеки Promise.prototype.then() ?
  • 43. youtube channel InSimpleWordsОбъекты в ECMAScript Магия исчезает тогда, когда появляются знания!
  • 44. youtube channel InSimpleWordsОбъекты в ECMAScript Семья – это важная первичная ячейка общества / ECMAScript, в которой люди / объекты связаны между собой определенными отношениями. ЕCMAScript вариант: конструктор объект прототип Классический вариант: мама сын папа
  • 47. youtube channel InSimpleWordsОбъекты в ECMAScript Функция CreateObj настраивает “свой” объект- прототип CreateObj.prototype свойствами, которые пригодятся в будущем рожденному объекту child. А обратиться к этим свойствам у CreateObj.prototype - сhild сможет через [[Prototype]]
  • 48. youtube channel InSimpleWordsОбъекты в ECMAScript А у папы и мамы есть свои папа и мама … А у них свои … Построим генеалогическое древо нашей функции ? Поищем Адама и Еву у CreateObj ?
  • 51. youtube channel InSimpleWordsОбъекты в ECMAScript Наверно, над многими из нас есть семья соседей сверху: маркизы Де-Generator-s … Не надо всматриваться и разбираться в следующем рисунке! Он лишь для примера! Показывает, почему их семья объектов не дают нам, программистам, спать по ночам. Рисунок скопирован из спецификации
  • 53. youtube channel InSimpleWordsОбъекты в ECMAScript … сейчас это уже детская забава, но именно в тот момент чувствовалось, как нечто в нашем сознании незримо поменялось … Эксперимент
  • 54. youtube channel InSimpleWordsОбъекты в ECMAScript let child = new CreateObj(); function CreateObj() { console.log("I am Mother"); this.age = 4; }; CreateObj.prototype = { xBox: true, nerves: "Steel", mind: "sharp", heart: "brave" }; функция объект, рожденный от функции Эксперимент: исходные данные прототип объекта прототайп функции
  • 55. youtube channel InSimpleWordsОбъекты в ECMAScript Эксперимент: __proto__ работает
  • 56. youtube channel InSimpleWordsОбъекты в ECMAScript Эксперимент: такого свойства, как “__proto__” , не существует
  • 57. youtube channel InSimpleWordsОбъекты в ECMAScript Эксперимент: for in не смог помочь нам найти “__proto__”
  • 58. youtube channel InSimpleWordsОбъекты в ECMAScript Эксперимент: в конце концов свойство “__proto__” мы находим у Object.prototype
  • 59. youtube channel InSimpleWordsОбъекты в ECMAScript Эксперимент: искушение – прибиваем “__proto__”
  • 60. youtube channel InSimpleWordsОбъекты в ECMAScript Эксперимент: прототипа больше нет ни у кого, JavaScript сломлен
  • 61. youtube channel InSimpleWordsОбъекты в ECMAScript Эксперимент: но ECMAScript не сломан !
  • 62. youtube channel InSimpleWordsОбъекты в ECMAScript Эксперимент: итоги Прототипная цепь работает. Свойство __proto__ равно undefined, а JavaScript как работал, так и продолжает работать. Напакостив “светлой стороне силы”, мы ничего не сможем сделать “темной”. Внутренняя структура объектов EcmaScript и их взаимосвязи не нарушены!
  • 63. youtube channel InSimpleWordsОбъекты в ECMAScript Эксперимент: итоги Объект с точки зрения EcmaScript - это техническое описание некой абстрактной сущности, которая: - существует во взаимосвязи с другими объектами, опираясь на ссылку [[Prototype]] - обладает набором собственных внутренних свойств и методов, обеспечивающими предсказуемое поведение (behavior + invariants) - состоит в JavaScript из свойств, каждое из которых управляется дескриптором
  • 64. youtube channel InSimpleWordsОбъекты в ECMAScript Ну и в заключение А нужно ли разбираться в ECMAScript? И без него как-то жили, живем и будем жить …
  • 77. youtube channel InSimpleWordsОбъекты в ECMAScript Спасибо всем внимание! И помните об ECMAScript! Истина где-то рядом … V8