Девять, что такое прототип, цепочка прототипов?
Опытный образец:
Каждая функция-конструктор имеет свойство прототипа, то есть явное свойство прототипа, которое указывает на объект-прототип функции-конструктора.
Каждый объект экземпляра имеет свойство __proto__, неявное свойство прототипа, которое указывает на объект-прототип, создавший функцию.
Значение устанавливается в объект-прототип через явное свойство прототипа, а значение считывается в объект-прототип через неявное свойство прототипа, то есть неявное значение свойства-прототипа объекта-экземпляра равно явному значению свойства-прототипа его функция-конструктор
Цепь прототипа:
Каждый объект-прототип, создающий функцию, которая по умолчанию является пустым объектом экземпляра объекта функции-конструктора, также имеет свойство __proto__.
Цепочка __proto__ свойств объектов-экземпляров и объектов-прототипов, цепочка прототипов, заканчивающаяся __proto__ свойствами объекта-прототипа, из которых Object строит функцию
При чтении значения объекта-экземпляра оно сначала находится в самом объекте-экземпляре, а когда его не удается найти, оно находится в объекте-прототипе его функции-конструктора через свойство __proto__.
Если вы еще не можете его найти, продолжайте искать свойство __proto__, пока Object не сконструирует свойство __proto__ объекта-прототипа функции, которое равно null .
Что такое закрытие?
Функция, определенная в теле функции, которая обращается к внешней функциональной переменной, то есть функция замыкания (замыкание)
Преимущества:
1. Продлить жизненный цикл локальных переменных в функции
2. С частными переменными вне функции можно работать внутри функции [Ключевая роль]
Недостатки: Может привести к утечке памяти, поэтому используйте с осторожностью.
Сценарии применения:
1. Используйте функцию в качестве возвращаемого значения функции, например, инкапсулируя модули API, предоставляя только внутреннюю функцию функции внешнему миру и не раскрывая частные переменные внешней функции — — аналогично модификации разрешения класса