Фильтр
Свойства prototype и __proto__ в JavaScript.
Ещё до того как в JavaScript появилось само ключевое слово "class" в JavaScript существовал другой способ создания классов. Нужно было лишь написать функцию, использовать в ней ключевое слово "this" и при помощи ключевого слова "new" обратиться к этой функции, создав, таким образом, экземпляр класса. Например: var Fn = function(tmp){ this.a = tmp } var inst = new Fn(3) У любой функции есть специальный пустой объект-"заготовка" для создания экземпляров класса. Как раз ссылка на этот объект, лежит в свойстве "prototype" у любой функции. Свойство "prototype" есть только у функций. Когда к функции идет обращение при помощи ключевого слова "new", функция берет и помещает себя в этот пустой объект-"болванку" и вызывает сама себя. Таким образом, использованные в функции ключевые слова "this" будут указывать на этот объект и он заполняется. Если добавить этому объекту какое-либо свойство или метод, то в дальнейшем это свойство или метод будет доступно всем экземплярам данного класса по п
Свойства prototype и __proto__ в JavaScript.
Показать еще
  • Класс
self = this в JavaScript
Постараюсь дать простое объяснение (без всяких асинхронных функций), когда конструкция self = this применяется в JavaScript. Создадим объект, в котором определены поле a = 2, b = 3 и функция fn, которая выводит в консоль поле a данного объекта при помощи ключевого слова this. В консоли мы ожидаемо получаем поле a объекта myObj, то есть 2. var myObj = { a : 2, b : 3, fn : function(){ console.log(this.a) // 2 } } myObj.fn() Но если внутрь функции fn вложить ещё одну функцию и в ней в консоль попытаться вывести поле b объекта myObj, мы получим в этом случае undefined. var myObj = { a : 2, b : 3, fn : function(){ console.log(this.a) // 2 var fn2 = function(){ console.log(this.b) // undefined } fn2() } } myObj.fn() Дело в том что, проверяется контекст функции, в которой встретилось ключевое слово this. В данном случае это функция fn2. Её контекст (ближайшие внешние фигурные скобки) относится к функции, а не к какому-либо объекту. И поэтому ключе
self = this в JavaScript
Показать еще
  • Класс
Показать ещё