// codeart.ru / Главная / Реализация наследования на JavaScript-е Форум

Реализация наследования на JavaScript-е rss подписка

Автор: Evgeny Sergeev

Широко известный факт, что в JS нет классов, а значит нет наследования. Поэтому приходится придумывать разные трюки. Например такой:

1. Создаем дополнительную функцию

function implements(target, parentClass)
{
if(undefined == target.Parent)
target.Parent = [];
for(var i in parentClass){
if(target[i] == undefined){
target[i] = parentClass[i];
}else{
// Если функция создана в классе-потомке то располагаем ее в Parent
// предварительно проверяем наличие в Parent таких же функций от других
// классов-родителей.
if(undefined == target.Parent[i]){
target.Parent[i] = parentClass[i];
}else{
alert(’Ошибка: Конфликт разрешения имен. Метод или свойство: ‘+i+’ уже существует!’);
return;
}
}
}
}

2. Класс создаем так:

function SomeClass(){}
SomeClass.prototype = {
method_1: function(){alert(’Run method 1′);}
}

3. Наследование делаем так:

function AnotherClass(){
implements(this, SomeClass);
}

AnotherClass.prototype = {
method_2: function(){alert(’Run method 2′);}
}

var v = new AnotherClass();

v.method_1();
v.method_2();

Недостаток заключается в том, что не наследуются конструкторы. А в остальном все очень удобно!

  1. искусственная какая-то конструкция
    и для скриптов разве нужны такие навороты?

Leave a Reply

« Вебпланета пишет “В Рунет ломанулись западные инвесторы” В каких случаях нельзя применять AJAX »

 

проектирование домов коттеджей москва . | Фирма реализует световые гирлянды световой занавес | тротуарная плитка цена санкт-петербург . | сотовые телефоны nokia, сотовые телефоны.