Наследование в JavaScript (хабрасеминар)
Недавно в Хабре я хотел прочитать небольшой доклад об объектной ориентации и наследовании классов в JavaScript.
Дело в том, что в свое время я был в полном восторге, научившись создавать свои собственные объекты и выстраивать цепочки наследования, и решил, что называется, поделиться с другими своими находками и наблюдениями. (=
Признаюсь, что в процессе подготовки текстов семинара некоторые вещи я открыл для себя заново и был вновь удивлен теми возможностями, которые JavaScript имеет в своем распоряжении, и которые становятся доступными разработчику лишь при пристальном разглядывании и экспериментировании языком.
Пользуясь тем, что семинар все время откладывается «до следующей пятницы», я решил опубликовать тексты семинара в сети, дабы мои восторги оказались полезными еще кому-нибудь. Итак:
В быстром темпе дается понимание того, что все в JavaScript по сути есть объект. Поэтому не странно выглядит следующая конструкция:
Введение в понятие класса в JavaScript. Разбор таких базовых понятий как .constructor и .prototype
Обзор методов и свойств класса: члены класса могут быть открытыми (public), закрытыми (private), привилегированными (privileged) и статическими (static). Понятие замыкания (closure)
В JavaScript нет встроенной поддержки наследования (как собсвенно нет в нем и классов). Однако наследование можно реализовать (эмулировать) вручную, пользуясь услугами свойства .prototype.
Эта, заключительная часть семинара, повествует о тех опасностях, которые подстерегают любого разработчика, дерзнувшего реализовать полноценное наследование в JavaScript. В конце повествования все оказывается хорошо, и мы с удовольствием преодолеваем все трудности (=
Объектно-ориентированный Java Script
Дело в том, что в свое время я был в полном восторге, научившись создавать свои собственные объекты и выстраивать цепочки наследования, и решил, что называется, поделиться с другими своими находками и наблюдениями. (=
Признаюсь, что в процессе подготовки текстов семинара некоторые вещи я открыл для себя заново и был вновь удивлен теми возможностями, которые JavaScript имеет в своем распоряжении, и которые становятся доступными разработчику лишь при пристальном разглядывании и экспериментировании языком.
Пользуясь тем, что семинар все время откладывается «до следующей пятницы», я решил опубликовать тексты семинара в сети, дабы мои восторги оказались полезными еще кому-нибудь. Итак:
ООП в Java Script (1): Объекты
В быстром темпе дается понимание того, что все в JavaScript по сути есть объект. Поэтому не странно выглядит следующая конструкция:
var f = function(){ // создаем новый метод f объекта window (window.f)
alert(this == window); // выводит true
}
f(); // вызываем метод f объекта window (window.f())
f.m = function(){ // создаем новый метод m объекта window.f (window.f.m)
alert(this == f); // выводит true
}
f.m(); // вызываем метод m объекта window.f (window.f.m())
ООП в Java Script (2): Классы
Введение в понятие класса в JavaScript. Разбор таких базовых понятий как .constructor и .prototype
// Функция-конструктор - это обычная функция
var Class = function(p){
alert('My name is constructor');
}
var s = 'karaboz';
s.constructor.prototype.tell = function(){
alert(this);
}
s.tell(); // выводит 'karaboz'
ООП в Java Script (3): Свойства и методы класса
Обзор методов и свойств класса: члены класса могут быть открытыми (public), закрытыми (private), привилегированными (privileged) и статическими (static). Понятие замыкания (closure)
ООП в Java Script (4): Наследование классов
В JavaScript нет встроенной поддержки наследования (как собсвенно нет в нем и классов). Однако наследование можно реализовать (эмулировать) вручную, пользуясь услугами свойства .prototype.
Эта, заключительная часть семинара, повествует о тех опасностях, которые подстерегают любого разработчика, дерзнувшего реализовать полноценное наследование в JavaScript. В конце повествования все оказывается хорошо, и мы с удовольствием преодолеваем все трудности (=



комментарии (54)