Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
В языке Си (и всех его потомках) эта проблема решается весьма сурово — объявление вложенных функций запрещено. В Паскале — наоборот, вложенные функции есть, но возможность вернуть функцию на выходе отсутствует.
если каждый потомок будет содержать копии методов родителя, то это приведет к лишнему расходу памяти
clone ;)каждый конструктор «висит» над своим объектом
Пара конструктор+прототип (в этом примере: B()+B.prototype) играет ту же роль, что класс в классическом ООП
наследование сделано по-старинке, через new
Ссылка на родительский объект (__parent__ в листингах 6 и 7) во многих реализациях называется __proto__
В случае вызова функции не как метода объекта, this по-умолчанию указывает на глобальный объект
var o = {m: function() {this;}};
o.m(); // o
(o.m)(); // o
(o.m = o.m)(); // global
(o.m || o.n)(); // global
Замыкания и объекты JavaScript. Переизобретаем интерпретатор